あなたがサービスを持っているとしましょう:
interface ISuessService {
Task<Thing> Thing1();
Task<Thing> Thing2();
}
そして、私は拡張メソッドを持っていますContinueOnUIThread
、そこで私は次のようなクールなことをすることができます:
myService.Thing1().ContinueOnUIThread(_ => label.Text = "Done!");
UIスレッドと簡単にやり取りできます。
ContinueWith
これを行う新しい拡張メソッドを実装するための最良の方法は何ですか?
myService.Thing1()
.ContinueWith(myService.Thing2())
.ContinueOnUIThread(_ => label.Text = "Done!");
基本的に、完了Thing2
後に開始Thing1
し、その後にUIスレッドを呼び出します。
私が来た最も近いものはこのようなものですが、私は本当に電話するのが好きではありませんWait
:
myService.Thing1()
.ContinueWith(_ => {
var thing2 = myService.Thing2().Wait();
return thing2.Result;
})
.ContinueOnUIThread(_ => label.Text = "Done!");
これを行うためのクリーンな方法はありますか?
PS-私は.Net4.5を持っていないので、待機/非同期は許可されていません-このコードはAndroid用のMonoTouch / Monoで実行する必要があるため、4.0に固執します
PS-私の使用に注意してください_
。これは「私は実際にはこのパラメータを使用していません」のショートカットにすぎません。