私はこれを行うことができることがしたいと思います。もちろんタスクのOnCompletedコールバックはどこにありますか?
class MyClass
{
IRepo repo;
public MyClass(IMyRepo repo) { this.repo = repo; }
long ID { get; set; }
string Prop1 { get; set; }
string Prop2 { get; set; }
public async Task LoadAsync()
{
await Task.WhenAll(
repo.GetProp1ByIDAsync(ID).OnComplete(x => Prop1 = x),
repo.GetProp2ByIDAsync(ID).OnComplete(x => Prop2 = x)
);
}
}
が、私はTask
ため、このOnComplete
拡張子を持つすべての標準ライブラリを見つけるように見えることはできません。私は本当に自分自身を作成する必要がありますか、すでにこの拡張メソッドを持っているライブラリがありますか?私はContinueWith
があることがわかりますが、それは私にはまだ解けない結果を与えていません、私はまだawait
または.Result
それを持っているので...スレッドをブロックしないでしょうか?これが完了するまで、2番目のrepo
コールを保持しますか?それを保持していない場合、その結果がまだラップされているのはなぜですか?アンラップされた結果を返すのはよりクリーンですか?または私は何かを逃していますか?
サイドノート:この(タスクonCompleteの非同期(async) 'のpublic static:' async'とコールバックを混合読者のために混乱することができるが...私は1つの文のfunctionlikeを実装するためのライブラリを探していないでしょうタスク t、アクションコールバック){callback(await t);} ' –