我有这个简单的方法:
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);
- 他们都使用线程池线程。
- 两者都等待执行完成(读取值时)
- 两者都向调用者重新抛出任何异常。
我什么时候应该使用每个?