Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c# taskcompletionsource

作者:寒江映月   发布日期:2025-06-07   浏览:57

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}");
    }
}

解释说明:

  1. TaskCompletionSource:这是一个类,允许你手动控制任务的完成状态。你可以通过它来创建一个 Task 对象,并在适当的时候设置它的结果或异常。

  2. tcs.SetResult(42):当异步操作完成后,调用 SetResult 方法来设置任务的结果。这会触发所有等待该任务完成的地方继续执行。

  3. await tcs.Task:使用 await 关键字等待 TaskCompletionSource 创建的任务完成,并获取其结果。

  4. Task.Run:用于启动一个新的线程来执行模拟的异步操作。在这个例子中,我们模拟了一个耗时2秒的操作,然后设置了任务的结果。

这个例子展示了如何使用 TaskCompletionSource 来手动控制任务的完成,并与异步编程模型结合使用。

上一篇:c#treeview

下一篇:c# razor

大家都在看

c# 二进制

c# tcp client

c# type.gettype

c# sqlconnection

.net和c#

c#游戏开发

c#网络编程

c# rectangle

c# if else

c# rtsp

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站