1. 給線程傳遞參數
1.1 使用 lambda 表達式
Thread t = new Thread(()=>Print("Hello from t")); t.Start();
使用這種方式可以響新線程傳遞任意個參數,甚至可以把方法到實現都放到 lambda 表達式中.
new Thread((String name, String value)=>{Console.WriteLine(name); Console.WriteLine(value);}).Start();
2. 獲取線程返回值
2.1 使用 Task 獲取返回值
Tasktask = Task.Factory.StartNew (()=>DownloadString("http://ww.linqpad.net")); RunSomeOtherMethod(); String taskResult = task.Result;
2.2 使用異步委托獲取返回值
Funcmethod = Work; IAsyncResult cookie = method.BeginInvoke("test",null,null); // //.....做其他並行工作 // int result = method.EndInvoke(cookie);
異步委托可以向線程傳遞任意多參數,獲取任意多返回值. 通常需要先定義 Func 委托, 指向要並行執行的方法, Func 委托執行方法後結果保存在 IAsyncResult 對象中, 通過 EndInvoke 方法取出返回值.