C#フォーム(WinForms)を使用して、表示されないようにした場合:
MyForm.Visible = false;
次に、私が作成した別のスレッドで。次のコードが実行されます。
this.Invoke(new MethodInvoker(delegate()
{
ProgressBar2.Visible = false;
}));
アプリケーションがフリーズし、続行されなくなります。MyFormが表示されている場合、スレッド内の上記のコードは正常に実行されます。表示されていない場合は、「this.Invoke(new MethodInvoker(delegate()」行を読み取るとすぐにコードの実行が停止します。エラーは発生せず、そのまま表示されます(ブレークポイントを設定して監視します)。 「this.Invoke(newMethodInvoker(delegate()」)の後に座っているだけです。
フォームが非表示になっているときにこれが実行されない理由について何か考えはありますか?そして、どうすればこの問題を回避できますか?MainFormでプログレスバーコントロールを表示できるように設定できる必要があるため(メインUIスレッド以外のスレッドでこれを行う必要があるため)、「this.Invoke(new MethodInvoker(delegate()」」を使用しています。フォームが表示されているかどうかに関係なく、これを実行します。