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