c# 關於Task類處理多線程的學習
1.定義一個線程
var task1 = Task.Factory.StartNew(() => DoSomeWork());
方法如下:
View Code
private static object DoSomeWork()
{
Console.WriteLine("nihao ");
System.Threading.Thread.Sleep(3000);
Console.Write("nihao ");
return "xiexie";
}
2.多線程執行后,執行另一個方法
var task1 = Task.Factory.StartNew(() => DoSomeWork()).ContinueWith(
task => { Console.WriteLine(task.Result.ToString()); }).ContinueWith(
task => { Console.WriteLine(task.Result.ToString()); });
3.等待所有線程結束
var task1 = Task.Factory.StartNew(() => DoSomeWork());var task2 = Task.Factory.StartNew(() => DoSomeWork());var task3 = Task.Factory.StartNew(() => DoSomeWork());Task.WaitAll(task1, task2, task3);4.等待其中一個線程結束
var task1 = Task.Factory.StartNew(() => DoSomeWork());var task2 = Task.Factory.StartNew(() => DoSomeWork());var task3 = Task.Factory.StartNew(() => DoSomeWork());Task.WaitAny(task1, task2, task3);5.等待所有線程結束執行的方法
var task1 = Task.Factory.StartNew(() =>{ Thread.Sleep(3000); return "dummy value 1";});var task2 = Task.Factory.StartNew(() =>{ Thread.Sleep(3000); return "dummy value 2";});var task3 = Task.Factory.StartNew(() =>{ Thread.Sleep(3000); return "dummy value 3";});Task.Factory.ContinueWhenAll(new[] { task1, task2, task3 }, tasks =>{ foreach (Task<string> task in tasks) { Console.WriteLine(task.Result); }});


浙公网安备 33010602011771号