У меня есть этот простой метод:
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);
- Они используют поток threadpool.
- Оба ждут завершения выполнения (при чтении значения)
- Оба отзывают любое исключение для вызывающего.
Когда я должен использовать каждый?