良い一日。私は form と 1 つの backgroundworker を持っています。bw_Dowork イベントでは、MessageBox.Show() (つまり、YES?NO ボックス) を使用してメッセージを出力する必要がある場合があります。しかし、messageBox.Show() メソッドを呼び出すたびに、実行がフリーズし、フォームで選択内容 (つまり、はい/いいえ) をクリックできなくなります。作業したい場合は、メッセージが表示されるので、すばやくクリックする必要がある場合があります。そうしないと、数秒のギャップを与えるとフリーズします。MessageBox.Show() を使用するインスタンスの例を以下に示します。
private void bw_DoWork(object sender, DoWorkEventArgs e)
{
if (fileFTP.Exists == false)
{
_busy.WaitOne();
if ((worker.CancellationPending == true))
{
e.Cancel = true;
return;
}
SetText("File Ftp.exe are missing. This file are required to preform update, please contact yout system administrator to retrive Ftp.exe", true);
MessageBox.Show("File Ftp.exe are missing. This file are required to preform update, please contact yout system administrator to retrive Ftp.exe");
goto ExitProgram;
}
}
これについてオンラインで調査したところ、MessageBox がインターフェイス スレッドに干渉しているとの指摘がありました。これにより、デリゲートを使用してメッセージをトリガーできますが、すべて役に立ちません。すべての MessageBoxes を削除する必要がありました。1つを残すと、解雇されたときに実行がフリーズします。助けていただければ幸いです。