您的位置:首页 > 其它

使用 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 方法取出返回值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  components