Ответ 1
Я подозреваю, что если есть только одна вещь, которая будет устанавливать результат, просто вызовите SetResult
и т.д. Если вы дважды вызываете SetResult
, это указывает на ошибку. (Аналогично, если TaskCompletionSource
был удален.)
Если у вас есть несколько потоков, которые все могут пытаться установить результат в одно и то же время (например, там, чтобы указать первый результат из нескольких параллельных вызовов веб-сервисов), используйте TrySetResult
, поскольку он полностью разумен для нескольких потоков, чтобы "попытаться" установить результат, не зная, установлен ли еще один поток.
Я не видел никаких официальных указаний по этому вопросу, но это имело бы смысл.