1

WCF サービスをホストする Winforms アプリケーションがあります。

ボタンクリックイベント内で、この接続がまだ進行中(1〜2秒)にUIが応答するためにConnect接続が開かれ、イベントの後、他のクラスに移動して自分のことを行います。BackgroundWorkerBackgroundWorker_RunWorkerCompleted

最近Thread.Sleep、デバッグ中にいくつか追加しましたが、UIがフリーズしないことに気付いたので、検索した後、おそらくBackgroundWorkerスレッドが原因であることがわかりました(私は正しいですか?)

私のアプリケーションには、フォーム クラスと、いくつかのイベントを含む別のクラスがあり、フォーム クラスはそれらのイベントをサブスクライブし、この方法で UI を更新します。

        this.Invoke((MethodInvoker)delegate
        {
            // Update UI
        });

したがって、私の質問は次のとおりです。この方法で別のスレッドを使用して使用しても問題ありthis.Invokeませんか?

それとも、別の方法で行う必要がありますか?

4

1 に答える 1

2

はい、これは問題ありません。非同期が登場する前にバックグラウンドワーカーが発明されたものです。

非同期の使用をお勧めします

于 2013-10-17T03:31:01.507 に答える