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);
     }
});
 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM