0

Web サービスへの呼び出しが多いメトロ アプリケーションを作成しています。Web サービスが少し遅い場合があります。また、データがダウンロードされるまでページ内で待機したくありません。

ただし、データが読み込まれるまで戻るボタンは無効になっています。これは大きな問題です。

だから私は試してみました:

 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.Run問題を投げ捨てることはできませんDispatcher.RunAsync。彼らが何をしているのかを理解する必要があります。

あなたの場合、これを行うことができるはずです:

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