我有两个课程View
和Presenter
。
class Presenter
{
View _view;
void OnViewLoad(object sender, EventArgs e)
{
_view.UpdateUIAsync();
// need to
// _view.UpdateUIAsync().then(....)
}
现在我希望方法OnViewLoad
在_view.UpdateUIAsync()
完成后执行一些代码。现在我的解决方案是修改View.UpdateUIAsync()
以接受操作参数_view.UpdateUIAsync(Action<object> after)
并让View
在异步代码完成后执行它。像承诺模式这样做更好的方式吗?
类View
是Winform表单,使用BackgroundWorker
进行异步,因为它使用.Net 3.5。
答案 0 :(得分:0)
如果您可以升级到.Net的更高版本,则可以从UpdateUIAsync返回任务
.Net 4.5。
await _view.UpdateUIAsync() // .Net 4.5
// statement after
.Net 4
_view.UpdateUIAsync().ContinueWith(...) // .Net 4.0
如果你无法升级我猜你必须坚持使用回调(就像你有的那样)或者添加一个在操作完成时触发的事件。