首页 > 解决方案 > IsCompleted 中等待的任务能否返回 false

问题描述

我找到了这段代码:

Task task = DoSomethingAsync( someObject );
await task.ConfigureAwait( false );
if ( task.IsCompleted ){ ... }

我想知道我是否可以安全地替换它

await DoSomethingAsync( someObject ).ConfigureAwait( false );

并删除 if 子句。

我的问题:task.IsCompleted当等待的任务返回时,它会不会是假的?

IsCompleted的文档告诉我们:

true如果任务已完成(即任务处于三种最终状态之一:RanToCompletion、Faulted 或 Canceled);否则,false

我查找了可能的状态,但是当等待的任务返回时,我仍然不清楚哪些状态是可能的。

请帮助我阐明这个问题。提前感谢。

标签: c#async-awaittask

解决方案


文档:await 运算符(C# 参考)

await 运算符暂停对封闭 async 方法的评估,直到其操作数表示的异步操作完成。

之后Task taskInstance = ...; await taskInstance;taskInstance.IsCompleted将永远为真。


推荐阅读