C# 将异步任务与INavigationAware一起使用Prism

C# 将异步任务与INavigationAware一起使用Prism,c#,prism,prism-6,C#,Prism,Prism 6,当async方法不是async时,如何将该方法调用到实现接口的方法中 在我的ViewModel中,我有一个async方法,每次用户导航到视图时都应该执行该方法 我能找到的最快(最差)的解决方案就是这个 public class MyViewModel : INavigationAware { //[...] public async void OnNavigatedTo(NavigationContext navigationContext) { awai

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 */           
    }
    //[...]
}

根据我从问题中收集到的信息,这应该是可行的。我做了一个项目的快速测试,我正在工作,看看这个概念的工作。每次使用此视图模型导航到视图时,
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/await
,并让调用的
async
Refresh
方法不返回任何内容。

根据我从问题中收集到的信息,这应该适用于此。我做了一个项目的快速测试,我正在工作,看看这个概念的工作。每次使用此视图模型导航到视图时,
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/await
,并让该调用一个不返回任何内容的
async
方法