c# - 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
。
我查找了可能的状态,但是当等待的任务返回时,我仍然不清楚哪些状态是可能的。
请帮助我阐明这个问题。提前感谢。
解决方案
await 运算符暂停对封闭 async 方法的评估,直到其操作数表示的异步操作完成。
之后Task taskInstance = ...; await taskInstance;
,taskInstance.IsCompleted
将永远为真。
推荐阅读
- html - 使嵌入元素移动响应
- bash - custom date/time format for --out-format in rsync
- javascript - Promise 和 React Native 协助
- python - Python Flask - 无法返回布尔值 true
- c# - 如何使用 C# 将数据插入本地数据库
- java - 如何阻止null打印
- javascript - 不能更正我的 javascript 代码以进行文件大小验证?
- git - git-svn clone:无法连接到存储库
- mysql - 对于 10gb 数据库大小和索引的 1 亿条记录,Mysql 查询仍然很慢
- regex - 如何使用正则表达式排除文本限定符内的分隔符?