等待的任务可以在 IsCompleted 中返回 false

Mon*_*Zhu 3 c# task async-await

我找到了这段代码:

Task task = DoSomethingAsync( someObject );
await task.ConfigureAwait( false );
if ( task.IsCompleted ){ ... }
Run Code Online (Sandbox Code Playgroud)

我想知道我是否可以安全地将其替换为

await DoSomethingAsync( someObject ).ConfigureAwait( false );
Run Code Online (Sandbox Code Playgroud)

并删除 if 子句。

我的问题:task.IsCompleted当等待的任务返回时,可能会出现错误吗?

IsCompleted 的文档告诉我们:

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

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

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

Cod*_*ter 6

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

wait 运算符暂停对封闭异步方法的求值,直到其操作数表示的异步操作完成。

之后Task taskInstance = ...; await taskInstance;taskInstance.IsCompleted永远都是真的。