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
方法