1.委托: public delegate int Math(int param1,int param2);定義委托類型 Public int Add(int param1,int param2)//定義同簽名函數 { Return param1+param2; } Math math;//聲明委托 math=new Math(Add);創建委托對象,與指定進行關聯 math(3,4);//調用委托函數 2.官方為了方便 給了Func Action Func<int,int,int> math=delegate(int param1,int param2) { Return param1+param2; } Lambda: Func<int,int,int> math=(param1,param2)=> { Return param1+param2; } Action的使用如同上面Func的使用一樣,沒有返回值 Public void Add(int param1,int param2) { MessageBox.show((param1+param2).ToString()); } Action<int,int> math=Add; math(3,4); public static HomePageResponse HomePage(HomePageRequest request) { Task taskGetUnread = Task.Factory.StartNew(() => GetUnReadStatus(businesstypes, zjid, response)); Task taskGetRecommend = Task.Factory.StartNew(() => GetRecommend(response)); Task taskGetRunningStatus = Task.Factory.StartNew( () => GetRunningStatus(vehicleid, ref runningstatus, ref accumulatorstatus, ref residualoil, ref accumulatorvalue, response, ref getvaluetime)); Task<VehicleDiagnosesData> taskDiagnose = Task.Factory.StartNew<VehicleDiagnosesData>(() => GetDiagnosesData(vehicleid, devicetype, response)); Task<VehicleAffairsData> taskAffairs = Task.Factory.StartNew<VehicleAffairsData>(() => GetOverView(vehicleid, zjid, response)); Task<VehicleDriveData> taskDriveData = Task.Factory.StartNew<VehicleDriveData>( () => GetTripAnalysis(vehicleid, devicetype, rtripid, ref platenumber, ref forrealtime, response)); Task[] tasks = new Task[] { taskGetUnread, taskGetRecommend, taskGetRunningStatus, taskDiagnose, taskAffairs, taskDriveData}; Task.WaitAll(tasks); WaitAll 是阻塞當前線程等待其它任務完畢的意思; WhenAll } https://docs.microsoft.com/zh-cn/dotnet/api/system.threading.tasks.task.waitall?view=netframework-4.7.2 1、Task用的是線程池,線程池的線程數量的有上限的,這個可以通過ThreadPool修改 int minWorkThreadCount = processorCount * 4; int minIOWorkThreadCount = processorCount * 2; ThreadPool.SetMinThreads(minWorkThreadCount, minIOWorkThreadCount); 2、Task.Factory.StartNew不是直接創建線程,創建的是任務,它有一個任務隊列,然后通過任務調度器把任務分配到線程池中的空閑線程中,如果任務的數量比線程池中的線程多,線程池的線程數量還沒有到達上限,就會創建新線程執行任務。如果線程池的線程已到達上限,沒有分配到線程的任務需要等待有線程空閑的時候才執行。