私には 2 つのタスクがt1
ありt2
、次のように開始/終了非同期モデルで設計された古い API から生成します。しかし、私は厳密にそれらを次々に実行したいと思っています。(これは Azure テーブル ストレージ API です)
Task<DataServiceResponse> t1 = Task.Factory.FromAsync(ctx1.BeginSaveChangesWithRetries(null, null), r => ctx1.EndSaveChangesWithRetries(r));
Task<DataServiceResponse> t2 = Task.Factory.FromAsync(ctx2.BeginSaveChangesWithRetries(null, null), r => ctx2.EndSaveChangesWithRetries(r));
await t1.ContinueWith(t => t2, TaskContinuationOptions.NotOnFaulted | TaskContinuationOptions.NotOnCanceled);
ドキュメントを読みましたFromAsync
が、これらのタスク ( t1
& t2
) が起動されるかどうかは記載されていません。
FromAsync(IAsyncResult, Action<IAsyncResult>):
指定された IAsyncResult が完了したときにメソッド終了アクションを実行する Task を作成します。
- の実行が成功した後、この保証
t2
は常に実行されますか?t1
- このコードは
Begin...
、begin/end ペアのメソッドを呼び出していると思います。通常、操作 (この場合、Azure サービスへの HTTP 要求の作成) は end メソッドで行われますか? (begin/end 実装の内容についてはよくわかりません) - ステートメントの前に開始しますか
t1
(またはスケジュールされていますか)(私が使用するように)?await
Task.Factory.StartNew