私はこの単純な方法があります:タスク<T>対して非同期の代理人はC#でですか?
Task<string> task = Task.Factory.StartNew<int> (() => Work ("lalala"));
...
int result = task.Result;
またはこれに:
static int Work (string s) { return s.Length; }
を私はそれを実行することができ
Func<string, int> method = Work;
IAsyncResult myIasync= method.BeginInvoke ("lalala", null, null);
...
int result = method.EndInvoke (myIasync);
- 彼らの両方が、スレッドプールのスレッドを使用します。
- 両方とも実行が完了するのを待つ(値を読むとき)
- 両方とも、呼び出し元に例外を戻します。
いつそれぞれ使うべきですか?
私はタスクがより新しいと思っていますが、この小さなコードとの違いはほとんどありません。 –