如何在C#中创建和管理Task

   2024-09-30 6870
核心提示:在C#中,Task是一种轻量级的线程,用于执行异步操作使用Task.Run创建并启动一个新任务:using System;using System.Threading.Ta

在C#中,Task是一种轻量级的线程,用于执行异步操作

使用Task.Run创建并启动一个新任务:
using System;using System.Threading.Tasks;class Program{    static async Task Main(string[] args)    {        await Task.Run(() =>        {            Console.WriteLine("Hello from task!");        });    }}
使用Task.Factory.StartNew创建并启动一个新任务:
using System;using System.Threading.Tasks;class Program{    static async Task Main(string[] args)    {        var task = Task.Factory.StartNew(() =>        {            Console.WriteLine("Hello from task!");        });        await task;    }}
使用TaskCompletionSource<T>创建一个可以手动控制完成状态的任务:
using System;using System.Threading.Tasks;class Program{    static async Task Main(string[] args)    {        var tcs = new TaskCompletionSource<bool>();        // Simulate an asynchronous operation        Task.Run(() =>        {            Console.WriteLine("Hello from task!");            tcs.SetResult(true);        });        await tcs.Task;    }}
使用Task.WhenAll等待多个任务完成:
using System;using System.Threading.Tasks;class Program{    static async Task Main(string[] args)    {        var task1 = Task.Run(() =>        {            Console.WriteLine("Task 1");        });        var task2 = Task.Run(() =>        {            Console.WriteLine("Task 2");        });        await Task.WhenAll(task1, task2);    }}
使用Task.WhenAny等待多个任务中的一个完成:
using System;using System.Threading.Tasks;class Program{    static async Task Main(string[] args)    {        var task1 = Task.Delay(1000).ContinueWith(_ => "Task 1");        var task2 = Task.Delay(2000).ContinueWith(_ => "Task 2");        var completedTask = await Task.WhenAny(task1, task2);        Console.WriteLine($"Completed task: {completedTask.Result}");    }}
取消任务:
using System;using System.Threading;using System.Threading.Tasks;class Program{    static async Task Main(string[] args)    {        var cts = new CancellationTokenSource();        var task = Task.Run(() =>        {            while (!cts.Token.IsCancellationRequested)            {                Console.WriteLine("Task is running...");                Thread.Sleep(500);            }        }, cts.Token);        // Cancel the task after 2 seconds        await Task.Delay(2000);        cts.Cancel();        try        {            await task;        }        catch (OperationCanceledException)        {            Console.WriteLine("Task was canceled.");        }    }}

这些示例展示了如何在C#中创建和管理任务。你可以根据需要调整代码以适应不同的场景。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号