使用 lambda 表达式
2014-02-24 20:14
351 查看
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());
RunSomeOtherMethod();
String taskResult = task.Result;
用来说明这个 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 方法取出返回值。
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());
RunSomeOtherMethod();
String taskResult = task.Result;
用来说明这个 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 方法取出返回值。
相关文章推荐
- JSR 168 翻译01(What is a Portal& portlet?)
- 将数字(类似金钱)显示在控件中,你可以输入输出并且可以将数字转换成文字
- symantec最新招聘信息
- (二)初步了解
- DataGrid相关知识总结(转的)
- 我对于关键字Ref和Out的理解
- 我们的Android学习轨迹
- Framework Fundamentals 基本结构
- Framework Fundamentals 基本结构
- can reflect poorly on the business. When choosing the right equipment
- PCA--主成分分析
- 在.net窗体程序中使用用户控件
- PERL Catalyst 安装使用
- 如何配置才能使用InterDev 来调试ASP代码 zt
- 读取其他应用的manifest文件
- What do I Need to Get Started?
- Intermidiate EDI--ebXML
- An Introduction to Struts
- 有向图强连通分量Tarjan
- 【分享】Windows XP SP2 Build 2177 Nfo