Task 的基本概念在 C# 中Task是用于表示异步操作的类属于System.Threading.Tasks命名空间。它提供了一种更简洁的方式来处理异步编程避免了传统多线程编程的复杂性。Task可以返回结果通过TaskTResult或仅表示操作完成通过无返回值的Task。创建 Task通过Task.Run或Task.Factory.StartNew可以创建并启动一个任务。123456789// 无返回值的 TaskTask task Task.Run(() {Console.WriteLine(任务执行中);});// 有返回值的 TaskintTaskint taskWithResult Task.Run(() {return42;});等待 Task 完成使用await或Wait方法可以等待任务完成。123456789101112// 使用 await需在 async 方法中async Task ExecuteTaskAsync() {await Task.Run(() {Console.WriteLine(任务完成);});}// 使用 Wait阻塞当前线程Task task Task.Run(() {Console.WriteLine(任务完成);});task.Wait();获取 Task 结果对于有返回值的TaskTResult可以通过Result属性获取结果。12345Taskint task Task.Run(() {return42;});intresult task.Result;// 阻塞直到任务完成Console.WriteLine(result);// 输出 42异常处理Task可以捕获异步操作中的异常通过AggregateException处理。1234567891011Task task Task.Run(() {thrownewInvalidOperationException(任务出错);});try{task.Wait();}catch(AggregateException ex) {foreach(var einex.InnerExceptions) {Console.WriteLine(e.Message);}}Task 的组合Task.WhenAll和Task.WhenAny可以组合多个任务。12345678Task task1 Task.Run(() {/* 任务1 */});Task task2 Task.Run(() {/* 任务2 */});// 等待所有任务完成await Task.WhenAll(task1, task2);// 等待任意一个任务完成await Task.WhenAny(task1, task2);取消 Task通过CancellationToken可以取消任务。1234567891011CancellationTokenSource cts newCancellationTokenSource();Task task Task.Run(() {while(true) {if(cts.Token.IsCancellationRequested) {break;// 取消任务}}}, cts.Token);// 取消任务cts.Cancel();异步方法中的 Task在async方法中Task通常与await一起使用实现非阻塞操作。123456789async Taskint GetDataAsync() {await Task.Delay(1000);// 模拟异步操作return42;}async Task Main() {intresult await GetDataAsync();Console.WriteLine(result);}到此这篇关于C# Task异步编程的实现示例的文章就介绍到这了