检查异步调用是否已完成
本文关键字:已完成 是否 调用 异步 检查 | 更新日期: 2023-09-27 18:23:43
我有两个类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
在异步代码完成后执行它。像promise模式这样做是不是更好?
类View
是一个Winform形式,它使用BackgroundWorker
来执行异步,因为它使用.Net 3.5。
如果您可以升级到.Net的更高版本,则可以从UpdateUIAsync 返回任务
.Net 4.5.
await _view.UpdateUIAsync() // .Net 4.5
// statement after
.Net 4
_view.UpdateUIAsync().ContinueWith(...) // .Net 4.0
如果你不能升级,我想你必须坚持回调(就像你已经做过的那样),或者添加一个在操作完成时触发的事件。