2013-09-28 1 views
-1

я часто что-то вроде этого:Ищу Task.IsPending

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 метод расширения для этого, но мне любопытно, почему его нет в первую очередь. Проверяет ли ожидающий статус статус, который так или иначе считается устаревшим?

ответ

2

Я думаю, что вы просто ищете:

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

Как указано, IsCompleted охватывает неисправных и аннулированных состояния, а также RanToCompletion:

IsCompleted возвращает истину, когда задача в одном из трех конечных состояний: RanToCompletion, Faulted, или Canceled.

+1

@Noseratio Зачем использовать рефлектор, когда он находится в документации? – svick

Смежные вопросы