寻找Task.IsPending

时间:2013-09-28 05:57:34

标签: task-parallel-library

我经常做这样的事情:

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扩展方法,但我很好奇为什么它首先不在那里。是否以某种方式被弃用,检查待处理状态?

1 个答案:

答案 0 :(得分:2)

我认为你只是在寻找:

if (task != null && !task.IsCompleted)

正如文档所述,IsCompleted涵盖了出现故障和取消状态以及RanToCompletion

  当任务处于以下三种最终状态之一时,

IsCompleted将返回true:RanToCompletionFaultedCanceled