如果此方法不是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 */
}
//[...]
}
答案 0 :(得分: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/await
上的OnNavigatedTo
,并将该调用称为async
Refresh
方法,不返回任何内容。