1

async当此方法不是时,如何将方法调用到实现接口的方法中async

在我的 ViewModel 中,我有一个async方法,每次用户导航到视图时都应该执行该方法。

我能找到的最快(坏)解决方案就是这个

public class MyViewModel : INavigationAware
{
    //[...]
    public async void OnNavigatedTo(NavigationContext navigationContext)
    {
        await Refresh();
    }
    public async Task Refresh()
    {
        await Task.Run(() => 
        {
           // Asynchronous work
        });
        /* Actions on Gui Thread */           
    }
    //[...]
}
4

1 回答 1

0

根据我从问题中收集到的信息,这应该适用于此。我对我正在从事的项目进行了快速测试,以查看概念是否有效。Refresh每次使用此视图模型导航到视图时,该方法都应该运行。

public class MyViewModel : INavigationAware
{
    //[...]
    public void OnNavigatedTo(NavigationContext navigationContext)
    {
        Refresh();
    }
    public async void Refresh()
    {
        await Task.Run(() => 
        {
           // Asynchronous work
        }).ContinueWith(t=> /* Actions on Gui Thread */, TaskScheduler.FromCurrentSynchronizationContext());            
    }
    //[...]
}

我删除了async/awaiton OnNavigatedTo,并调用了一个async Refresh不返回任何内容的方法。

于 2016-06-26T17:51:30.213 回答