如何知道任务是否同步完成?

时间:2016-06-04 20:46:07

标签: c# .net asynchronous async-await task-parallel-library

我依旧记得有一个属性告诉我们一个任务是否同步执行但是我的记忆刚刚让我失望。或者可能没有,我正在将IAsyncResult.CompletedSynchronously与这个混在一起?

1 个答案:

答案 0 :(得分:5)

请检查:Task.IAsyncResult.CompletedSynchronously Property

它的描述看起来很像答案:

  

获取操作是否同步完成的指示。

为了检查属性值,您必须将Task强制转换为IAsyncResult,因为Task明确地实现了它。

bool? result = (myTask as IAsyncResult)?.CompletedSynchronously;

您可以使用System命名空间中定义的扩展方法WindowsRuntimeSystemExtensions.AsAsyncOperation代替显式转换:

bool result = myTask.AsAsyncOperation().CompletedSynchronously;

正如评论中合理指出的那样,虽然当前property implementation有一个插话。截至2016年10月1日,它始终返回false。这是一个需要改变的主题。