基本概念
是一种用于异步编程的概念。Task的重要特点是可以在后台执行方法或操作,而不会阻塞主线程或UI线程。
封装的异步操作,表示执行的操作正在进行。可以表示一个方法的返回值或者表示执行的操作已经完成。
Task类的主要成员
- 属性:TaskStatus、IsCanceled、IsCompleted、IsFaulted、Exception等
- 方法:Start()、RunSynchronously()、Wait()、WaitAll()、WaitAny()等
- 事件:Completed、Canceled、Faulted等
Task的使用方法
- 使用Task.Factory.StartNew()创建Task
- 异步运行一个方法或Lambda表达式,立即返回Task对象,然后异步执行方法或Lambda表达式
- 使用Task.Run()创建Task
- 使用TaskCompletionSource创建Task
- TaskCompletionSource是一个类,允许我们手动创建并控制异步返回值的Task对象。通常,异步操作的返回值是在异步操作完成时由异步方法设置的,但如果需要手动设置异步操作的返回值,可以使用TaskCompletionSource
- Task的等待和结果获取
- Task.Wait()、Task.Result或await关键字来等待Task对象完成并获取异步操作结果
- 案例
#region 等待异步完成 Task<int> task = Task.Run(() => { Console.WriteLine("Task Run"); return 42; }); task.Wait(); int result = await task; Console.WriteLine(result); int result1 = task.Result; Console.WriteLine(result1); #endregion
文章来源地址https://www.toymoban.com/news/detail-549305.html
- Task的示例代码
//并行编程 Parallel.For(1, 100, i => { Console.WriteLine($"Task {i} is running"); }); //异步编程 Task.Run(() => { Console.WriteLine("异步执行任务"); }); //Task.WhenAll示例代码 List<Task> tasks = new List<Task>(); for (int i = 0; i < 10; i++) { int index = i; tasks.Add(Task.Run(() => { Console.WriteLine($"Task {index} is running"); })); } Task.WhenAll(tasks).Wait();
文章来源:https://www.toymoban.com/news/detail-549305.html
到了这里,关于Task的基本概念、使用方法和实例代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!