我正在寫一個大量調用webservice的地鐵應用程序。 有時Web服務有點慢。我不想在一個頁面內等待,直到我的數據被下載。地鐵應用程序,不要凍結UI
但是,我的後退按鈕被禁用,直到我的數據已被加載。 這是一個大問題。
所以我試着用:
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能夠使用cancellationtoken。 而Dispatcher.RunAsync應該允許我不凍結我的用戶界面。 這在頁面LoadState中使用。
我該如何解決這個問題?
問候。
更新了(沒有解決我的問題):
try
{
Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() =>
ViewModel.InitAsync(date)).AsTask(_cts.Token);
}catch(Exception e)
{
Debug.WriteLine("HomePage, LoadState : "+e);
}
如果這段代碼出現?我懷疑你還是不需要'Task.Run',因爲你可以在'AsTask'調用中指定取消標記。 –
@JonSkeet在頁面加載狀態下顯示。 – David
那麼你就在那裏 - 直到Web服務調用完成後才能完成頁面加載。即使你沒有製作UI線程塊,我懷疑顯示的後退按鈕與頁面加載完成有關。 –