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<String> task = Task.Factory.StartNew<string>(()=>DownloadString("http://ww.linqpad.net"));
RunSomeOtherMethod();
String taskResult = task.Result;

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

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

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

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

 

 

 

 

 

 

 

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值