如何使用ReactiveUI正确取消ViewView停用任务?

问题描述

在我的MVVM应用程序中,当激活ViewModel时,将启动一个Task,该Task建立一个网络连接,并且可能需要一些时间才能完成。此任务是可扩展的:

private async Task ConnectAsync(CancellationToken cancellationToken = default)
{
    ...
}

我正在使用IActivatableViewModel这样在ViewModel激活中启动它:

// Constructor:
public SomeViewModel(...)
{
    this.WhenActivated(disposable => {
        Observable.StartAsync(ConnectAsync);
    });
}

现在,当在任务完成之前停用ViewModel时,建议取消该长期运行任务的方法是什么?

我想到了这个

this.WhenActivated(disposable => {
    Observable.StartAsync(ConnectAsync).Subscribe().DisposeWith(disposable);
});

这是正确的解决方案还是有更好的解决方案?

提前谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)