Я пытаюсь обернуть голову вокруг TPL, новые функции async
/await
на С# 5 и тайны TaskCompletionSource
.
Мне не ясно, когда использовать SetResult
, SetException
и SetCancel
по сравнению с TrySetResult
, TrySetException
и TrySetCancel
.
Это то, что MSDN должно сказать:
Эта операция вернет false, если Задача уже находится в одно из трех конечных состояний: RanToCompletion, Faulted или Canceled.
Этот метод также возвращает false, если основная задача имеет уже размещены.
Хорошо, я понимаю, но на самом деле он не дает никаких указаний о том, когда и почему использовать один над другим.
Итак, что сделка?