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