在inavationaware和Prism中使用异步任务
本文关键字:异步 任务 inavationaware Prism | 更新日期: 2023-09-27 17:51:19
如何将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());
}
//[...]
}
我删除了OnNavigatedTo
上的async/await
,并调用了async
Refresh
方法,该方法不返回任何值。