Windows svc (別のプロセス) を実行し、同時に UI を更新するコードがあります。呼び出しはBeginInvoke
、次のように使用します。
Install.BeginInvoke((MethodInvoker) delegate { Install.Enabled = false; });
これはDoWork
イベント ハンドラにあります。ただし、UI はまだフリーズします。どこかに電話する必要がありますApplication.DoEvents
か (必要な場合、どこに?)? 凍結を解消するにはどうすればよいですか?
ボタンクリックで、私は持っています:
GetPrinterDto(DirectoriesTreeView.SelectedNode.Text);
InstallBackgoundWorker.RunWorkerAsync();
InstallBackgroundWorker
UIなどを更新するコードを実行するだけです。
私がやろうとしているのは、WCF サーバー (Windows サービスでホストされている - これは問題ありません) を呼び出すことですが、それが機能していない間に、プログレス バーとラベルを任意の値で非同期に更新します。ツリー ノードを選択すると、選択したツリー ノードのイベント ハンドラーが起動され、速度が低下する場合があります。これを独自のバックグラウンドワーカーに入れてみます。