2

async/await 机制中是否有一个集成点来挂钩并知道何时启动异步方法?

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

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

谢谢!

4

1 回答 1

1

根据“任务状态”部分中的基于任务的异步模式:

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

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

Task如果您使用创建并返回“冷”(非运行)new Task(),则无法确定是否Task.Start()调用了该方法。您只能TaskStatus定期检查该物业。

于 2012-10-05T19:52:09.733 回答