【发布时间】:2012-12-13 10:54:21
【问题描述】:
Task 或 Task
我们也可以定义自己的可等待对象。该对象应具有以下条件。
- 它有一个GetAwaiter()方法(实例方法或扩展方法);
- 它的 GetAwaiter() 方法返回一个等待者。对象是等待者
如果:
- 它实现了 INotifyCompletion 或 ICriticalNotifyCompletion 界面;
- 它有一个 IsCompleted,它有一个 getter 并返回一个布尔值;
- 它有一个 GetResult() 方法,该方法返回 void 或结果。
我的问题是,为什么微软没有提供一个接口来约束这些等待对象? 目前实现等待对象的方法有点复杂。
【问题讨论】:
-
您在问为什么 GetAwaiter 是一个约定而不是 ITask 接口方法?微软在某处回答了这个问题......我希望我能记得在哪里。
标签: c# asynchronous async-await c#-5.0