TrySetResult
TrySetResult возвращает true при первом вызове и false потом, без InvalidOperationException.
Синтаксис
bool ok = tcs.TrySetResult(12345);
Пример
Давайте вызовем TrySetResult два раза:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var tcs = new TaskCompletionSource<int>();
bool first = tcs.TrySetResult(12345);
bool second = tcs.TrySetResult(99999);
Console.WriteLine(first);
Console.WriteLine(second);
int res = await tcs.Task;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
False
12345
Пример
Давайте сравним с SetResult, который бросает при повторе:
using System;
using System.Threading.Tasks;
class Program
{
static void Main()
{
var tcs = new TaskCompletionSource<int>();
tcs.TrySetResult(12345);
bool ok = tcs.TrySetResult(99999);
Console.WriteLine(ok);
}
}
Результат выполнения кода:
False
Смотрите также
-
SetResult,
версия с исключением -
SetException,
завершение сбоем -
Task,
задача для await -
TaskCompletionSource,
объект источника