我经常做这样的事情:
if (task != null && !task.IsCompleted && !task.IsCanceled && !task.IsFaulted)
{
// do something, e.g. cancel the task
}
将task.IsPending
作为!task.IsCompleted && !task.IsCanceled && !task.IsFaulted
的快捷方式会很棒,但它并不存在。并且task.Status == TaskStatus.Running
不一样,因为任务可以处于其中一个等待状态。
我有一个自定义的Task
扩展方法,但我很好奇为什么它首先不在那里。是否以某种方式被弃用,检查待处理状态?
答案 0 :(得分:2)
我认为你只是在寻找:
if (task != null && !task.IsCompleted)
正如文档所述,IsCompleted
涵盖了出现故障和取消状态以及RanToCompletion
:
当任务处于以下三种最终状态之一时,
IsCompleted
将返回true:RanToCompletion
,Faulted
或Canceled
。