CKEditor 圖片貼上上傳,實現圖文貼上,圖片自動上傳
阿新 • • 發佈:2021-11-04
轉 https://www.cnblogs.com/zhaoshujie/p/11082753.html
View Code
View Code
Task啟動帶引數和返回值的函式任務
1、Task的優勢
ThreadPool相比Thread來說具備了很多優勢,但是ThreadPool卻又存在一些使用上的不方便。比如:
◆ ThreadPool不支援執行緒的取消、完成、失敗通知等互動性操作;
◆ ThreadPool不支援執行緒執行的先後次序;
以往,如果開發者要實現上述功能,需要完成很多額外的工作,現在,FCL中提供了一個功能更強大的概念:Task。Task線上程池的基礎上進行了優化,並提供了更多的API。在FCL4.0中,如果我們要編寫多執行緒程式,Task顯然已經優於傳統的方式。
以下是一個簡單的任務示例:
2、Task的用法
2.1、建立任務
(一)無返回值的方式
方式1:
var t1 = new Task(() => TaskMethod("Task 1")); t1.Start(); Task.WaitAll(t1);//等待所有任務結束 注:任務的狀態: Start之前為:Created Start之後為:WaitingToRun
方式2:
Task.Run(() => TaskMethod("Task 2"));
方式3:
Task.Factory.StartNew(() => TaskMethod("Task 3")); 直接非同步的方法 //或者 var t3=Task.Factory.StartNew(() => TaskMethod("Task 3")); Task.WaitAll(t3);//等待所有任務結束 //任務的狀態: Start之前為:Running Start之後為:Running
async/await的實現方式:
View Code (二)帶返回值的方式
方式4:
Task<int> task = CreateTask("Task 1"); task.Start(); int result = task.Result;View Code
async/await的實現:
View Code2.2、組合任務.ContinueWith
簡單Demo:
View Code任務的序列:
View Code子任務:
View Code動態並行(TaskCreationOptions.AttachedToParent) 父任務等待所有子任務完成後 整個任務才算完成
2.3、取消任務 CancellationTokenSource
View Code2.4、處理任務中的異常
單個任務:
View Code多個任務:
View Codeasync/await的方式:
View Code2.5、Task.FromResult的應用
View Code2.6、使用IProgress實現非同步程式設計的程序通知
IProgress<in T>只提供了一個方法void Report(T value),通過Report方法把一個T型別的值報告給IProgress,然後IProgress<in T>的實現類Progress<in T>的建構函式接收型別為Action<T>的形參,通過這個委託讓進度顯示在UI介面中。
View Code2.7、Factory.FromAsync的應用(簡APM模式(委託)轉換為任務)(BeginXXX和EndXXX)
帶回調方式的
View Code不帶回調方式的
View CodeTask啟動帶引數和返回值的函式任務
轉https://www.cnblogs.com/zhaoshujie/p/11082753.html