基本概念
是一種用于異步編程的概念。Task的重要特點是可以在后臺執(zhí)行方法或操作,而不會阻塞主線程或UI線程。
封裝的異步操作,表示執(zhí)行的操作正在進行??梢员硎疽粋€方法的返回值或者表示執(zhí)行的操作已經完成。
Task類的主要成員
- 屬性:TaskStatus、IsCanceled、IsCompleted、IsFaulted、Exception等
- 方法:Start()、RunSynchronously()、Wait()、WaitAll()、WaitAny()等
- 事件:Completed、Canceled、Faulted等
Task的使用方法
- 使用Task.Factory.StartNew()創(chuàng)建Task
- 異步運行一個方法或Lambda表達式,立即返回Task對象,然后異步執(zhí)行方法或Lambda表達式
- 使用Task.Run()創(chuàng)建Task
- 使用TaskCompletionSource創(chuàng)建Task
- TaskCompletionSource是一個類,允許我們手動創(chuàng)建并控制異步返回值的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
?文章來源地址http://www.zghlxwxcb.cn/news/detail-549305.html
- Task的示例代碼
//并行編程 Parallel.For(1, 100, i => { Console.WriteLine($"Task {i} is running"); }); //異步編程 Task.Run(() => { Console.WriteLine("異步執(zhí)行任務"); }); //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();
?文章來源:http://www.zghlxwxcb.cn/news/detail-549305.html
?
到了這里,關于Task的基本概念、使用方法和實例代碼的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!