1

ローディングスクリーンを表示するためにバックグラウンドワーカーを使用しています。

DO イベントは次のようになります。

private void bwLoadingScreen_DoWork(object sender, DoWorkEventArgs e)
{
            _ls = new LoadingScreen();
            _ls.Show();
            while (!bwLoadingScreen.CancellationPending)
            {
                Application.DoEvents();
           }
}

次のコードを使用して、ロード画面を破棄します。

if (_ls.InvokeRequired && !_ls.IsDisposed)
            {
                Invoke(new MethodInvoker(delegate
                    {
                        _ls.Close();
                        _ls.Dispose();
                    }));
            }
            else if (!_ls.IsDisposed)
            {
                _ls.Hide();
                _ls.Dispose();
            }

これには RunWorkerCompleted イベントを使用する必要がありますか? これは、Backgroundworker を使用する正しい方法ですか?

4

2 に答える 2

4

あなたはこれを少し後ろ向きにやっているように感じます。バックグラウンドワーカーは、メイン プロセスが現在のフォームを表示し、場合によってはフォームを更新している間に作業を行う必要があります。バックグラウンド ワーカーがデータのロードを完了すると、バックグラウンド ワーカー イベント 'RunWorkerCompleted' のメイン スレッドでデータを処理する必要があります。

フォームを閉じるか非表示にする前に呼び出しを行う必要がないため、これによりコードも簡素化されます。

これがあなたの質問に答えたことを願っています。//反転

于 2013-05-13T12:21:45.303 に答える