TaskCompletionSource
TaskCompletionSource<int> держит незавершённую Task<int> до вызова SetResult или других методов.
Синтаксис
var tcs = new TaskCompletionSource<int>();
Пример
Давайте убедимся, что задача сначала не готова:
using System;
using System.Threading.Tasks;
class Program
{
static void Main()
{
var tcs = new TaskCompletionSource<int>();
Console.WriteLine(tcs.Task.IsCompleted);
}
}
Результат выполнения кода:
False
Пример
Давайте завершим через SetResult и дождёмся:
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,
выдать число -
SetException,
передать ошибку -
SetCanceled,
отмена -
Task,
доступ к задаче