假设您有以下服务:
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 - 我没有 .Net 4.5,所以不允许等待/异步 - 此代码必须在 MonoTouch/Mono for Android 上运行,所以坚持使用 4.0
PS - 注意我的使用_
,这只是“我没有真正使用这个参数”的快捷方式