异步方法启动时挂钩

时间:2012-10-05 12:38:51

标签: c# async-await c#-5.0

是否有async / await机制的集成点可以挂钩并知道异步方法何时启动?

自定义TaskScheduler可以提供此挂钩吗?自定义SynchronizationContext?

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

谢谢!

1 个答案:

答案 0 :(得分:1)

根据“任务状态”部分中的Task-based Asynchronous Pattern

  

从TAP方法返回的所有任务必须“热”[...],这意味着它们所代表的异步操作已经启动,并且它们的TaskStatus是Created之外的枚举值。

这意味着一旦创建它就会始终启动Task(至少在工厂方法实现TAP的情况下,对于.Net框架提供的所有方法都是如此)。

如果您使用Task创建并返回“冷”(非运行)new Task(),则无法找到是否已调用Task.Start()方法。您只能定期查看TaskStatus财产。