一、异步编程背景与动机
异步编程是应对I/O密集型、网络请求、长时间计算等场景的有效手段,旨在避免阻塞主线程,保持应用程序响应性,提升系统整体性能。C#提供了基于Task并行库(TPL)的Task异步模型,以及async/await语法糖,极大地简化了异步编程的复杂性。
二、Task并行库(TPL)与Task
-
Task:C#中的Task代表一个异步操作,可以是CPU-bound任务(如并行计算)或I/O-bound任务(如文件读写、网络请求)。Task提供了状态跟踪、取消、延续等功能。
创建Task实例:
// 创建一个立即返回已完成Task的实例(用于同步操作) Task completedTask = Task.CompletedTask; // 创建一个延迟执行的任务 Task delayedTask = Task.Delay(1000); // 创建一个执行异步操作的任务 Task<int> computationTask = Task.Run(() => { Thread.Sleep(1000); // 模拟耗时计算 return 42; // 返回计算结果 });
-
Task<TResult>:泛型Task用于承载异步操作的结果。
等待任务完成并获取结果:</