检查异步调用是否已完成

本文关键字:已完成 是否 调用 异步 检查 | 更新日期: 2023-09-27 18:23:43

我有两个类ViewPresenter

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

如果你不能升级,我想你必须坚持回调(就像你已经做过的那样),或者添加一个在操作完成时触发的事件。