using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
TaskCompletionSource<int> tcs = new TaskCompletionSource<int>();
// 模拟一个异步操作
Task.Run(() =>
{
// 假设这里有一些耗时操作
Console.WriteLine("开始执行异步任务...");
Task.Delay(2000).Wait(); // 模拟耗时2秒的操作
// 任务完成,设置结果
tcs.SetResult(42);
});
// 等待异步任务完成并获取结果
int result = await tcs.Task;
Console.WriteLine($"异步任务完成,结果是: {result}");
}
}
TaskCompletionSourceTask
对象,并在适当的时候设置它的结果或异常。
tcs.SetResult(42):当异步操作完成后,调用 SetResult
方法来设置任务的结果。这会触发所有等待该任务完成的地方继续执行。
await tcs.Task:使用 await
关键字等待 TaskCompletionSource
创建的任务完成,并获取其结果。
Task.Run:用于启动一个新的线程来执行模拟的异步操作。在这个例子中,我们模拟了一个耗时2秒的操作,然后设置了任务的结果。
这个例子展示了如何使用 TaskCompletionSource
来手动控制任务的完成,并与异步编程模型结合使用。
上一篇:c#treeview
下一篇:c# razor
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站