0

我正在编写一个对 web 服务有很多调用的 Metro 应用程序。有时网络服务有点慢。而且我不想在一个页面内等待,直到我的数据被下载。

但是,在我的数据加载之前,我的后退按钮被禁用。这是一个大问题。

所以我尝试了:

 try
{
    await Task.Run(() =>
                       {
                           Dispatcher.RunAsync(CoreDispatcherPriority.High, 
                           () => ViewModel.InitAsync(date)).AsTask(_cts.Token);
                       }, _cts.Token);
}catch(Exception e)
{
    Debug.WriteLine("HomePage, LoadState : "+e);
}

笔记;

我使用 Task.Run 能够使用取消令牌。Dispatcher.RunAsync 应该允许我不冻结我的 UI。这在页面 LoadState 中使用。

我该如何解决这个问题?

问候。

更新为(不能解决我的问题):

try
{
    Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
    ViewModel.InitAsync(date)).AsTask(_cts.Token);
}catch(Exception e)
{
    Debug.WriteLine("HomePage, LoadState : "+e);
}
4

1 回答 1

0

你不能只顾自己Task.RunDispatcher.RunAsync问题。你需要了解他们在做什么。

在你的情况下,你应该能够做到这一点:

try
{
  await ViewModel.InitAsync(date);
}
catch (Exception e)
{
  Debug.WriteLine("HomePage, LoadState : " + e);
}
于 2012-11-20T14:04:47.573 回答