2012-06-21 14 views
0

我試圖異步加載數據,但第一次沒有顯示進度條,它像UI線程正忙着調用BackgroundWork並且不呈現控件。我做錯了什麼?如何在Windows Phone上加載數據異步

這是異步代碼,這個問題windows phone 7 progress bar for a listbox loading data

private void Embarques_Loaded(object sender, RoutedEventArgs e) 
{ 

    progressBar.Visibility = System.Windows.Visibility.Visible; 

    BackgroundWorker bw = new BackgroundWorker(); 

    bw.RunWorkerCompleted += (s, ea) => 
     Deployment.Current.Dispatcher.BeginInvoke(() => 
     { 
      progressBar.Visibility = System.Windows.Visibility.Collapsed; 
      txtUltimaAtualizacao.Text = DateTime.Now.ToString(); 
     }); 

    bw.DoWork += (s, ea) => 
     Deployment.Current.Dispatcher.BeginInvoke(CarregaItens); 

    bw.RunWorkerAsync(); 
} 

回答

3

假設CarregaItens()靈感是你的加載過程中,你不應該叫Deployment.Current.Dispatcher.BeginInvoke它作爲剛剛提升它從後臺線程到UI線程,從而在運行時凍結您的應用。只需撥打電話:

bw.DoWork += (s, ea) => CarregaItens();

+0

OMG!我不敢相信!你解決了這個問題,男人!讓我明白了這個異步的東西。非常感謝你! – programad