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/