【发布时间】:2012-12-04 07:37:39
【问题描述】:
我有这个简单的方法:
static int Work (string s) { return s.Length; }
我可以运行它:
Task<string> task = Task.Factory.StartNew<int> (() => Work ("lalala") );
...
int result = task.Result;
或者用这个:
Func<string, int> method = Work;
IAsyncResult myIasync= method.BeginInvoke ("lalala", null, null);
...
int result = method.EndInvoke (myIasync);
- 它们都使用线程池线程。
- 两者都等待执行完成(读取值时)
- 两者都向调用者重新抛出任何异常。
我应该什么时候使用每个?
【问题讨论】:
-
我认为任务更好,因为它更新,但我几乎不相信这个小代码会有任何不同。
标签: c# .net multithreading .net-4.0