C# 多线程多参数和返回值用法

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 获取返回值

Task task = Task.Factory.StartNew(()=>DownloadString("http://ww.linqpad.net"));
RunSomeOtherMethod();
String taskResult = task.Result;

用来说明这个 Task 返回一个 String 结果值. 这个值是 DownloadString() 方法都返回值.

2.2 使用异步委托获取返回值

Func method = Work;
IAsyncResult cookie = method.BeginInvoke("test",null,null);
//
//.....做其他并行工作
//
int result = method.EndInvoke(cookie);

异步委托可以向线程传递任意多参数,获取任意多返回值. 通常需要先定义 Func 委托, 指向要并行执行的方法, Func 委托执行方法后结果保存在 IAsyncResult 对象中, 通过 EndInvoke 方法取出返回值.

 

 

 

 

 

 

 

 

 


 

你可能感兴趣的:(C#系列)