0

データを非同期にロードしようとしていますが、初めてプログレスバーが表示されません。UI スレッドが BackgroundWork の呼び出しでビジーで、コントロールをレンダリングしないようです。私が間違っていることは何ですか?

これは、データをロードするリストボックスのこの質問 windows phone 7 の進行状況バーに触発された非同期コードです。

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();
}
4

1 に答える 1

3

ロード プロセスがロード プロセスであると仮定すると、バックグラウンド スレッドから UI スレッドに昇格させ、実行中にアプリをフリーズさせるだけなので、それをCarregaItens()呼び出すべきではありません。Deployment.Current.Dispatcher.BeginInvokeただ電話してください:

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

于 2012-06-21T00:46:11.177 に答える