Task
Task - то же Task<int>, которую завершает SetResult. Повторные обращения к Task дают один объект.
Синтаксис
Task<int> task = tcs.Task;
Пример
Давайте убедимся, что два Task - одна ссылка:
using System;
using System.Threading.Tasks;
class Program
{
static void Main()
{
var tcs = new TaskCompletionSource<int>();
var a = tcs.Task;
var b = tcs.Task;
Console.WriteLine(object.ReferenceEquals(a, b));
}
}
Результат выполнения кода:
True
Пример
Давайте завершим через SetResult и дождёмся того же Task:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var tcs = new TaskCompletionSource<int>();
var task = tcs.Task;
tcs.SetResult(12345);
int res = await task;
Console.WriteLine(res);
}
}
Результат выполнения кода:
12345
Смотрите также
-
SetResult,
завершение -
TrySetResult,
безопасная выдача -
TaskCompletionSource,
владелец свойства -
Task,
тип задачи