c# - 启动异步方法时 Hook

标签 c# async-await c#-5.0

async/await 机制中是否有集成点以挂接并了解异步方法何时启动?

自定义 TaskScheduler 可以提供这个钩子(Hook)吗?自定义 SynchronizationContext?

我希望能够跟踪某些方法调用并知道它们与哪个任务(或代码)相关联。

谢谢!

最佳答案

根据Task-based Asynchronous Pattern在“任务状态”部分:

All tasks returned from TAP methods must be “hot” [...] meaning that the asynchronous operations they represent have already been initiated and their TaskStatus is an enumeration value other than Created.

这意味着您将始终在创建 Task 后立即启动它(至少如果工厂方法实现了 TAP,这对于 .Net 框架提供的所有方法都是如此)。

如果您使用 new Task() 创建并返回一个“冷”(非运行)Task,则没有干净的方法来确定 >Task.Start() 方法被调用。您只能定期检查 TaskStatus 属性。

关于c# - 启动异步方法时 Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12746454/

相关文章:

c# - 从 MVC4 中的表单获取数据

c# - 用于创建带有命名空间声明的新 C# 类的 VSCODE 片段

c# - 如何指定泛型类型标识符类型(用于数据库查询)以及泛型类型

Javascript:WAITING已解决的 promise

c# - unity 或 unity.mvc4 用于 MVC4 应用程序

c# - 嵌套循环的更快替代方案?

node.js - 如何验证token是否过期

javascript - console.log 不使用 await 变量记录

c# - 为什么 "async void"单元测试无法识别?

.net - 使用异步 CTP 封装同步方法不起作用