再会。我有一个表格和一个 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。留下一个仍然会在我被解雇时冻结我的执行。请任何帮助将不胜感激。