过去两天我一直在努力为这个问题寻找解决方案。基本上当我调试我的表单应用程序时,我有一个带有onclick事件处理程序的按钮。这是我的处理程序中的代码。
private void btnBrowseReqDoc_Click(object sender, EventArgs e)
{
OpenFileDialog FileDlg = new OpenFileDialog();
FileDlg.InitialDirectory = m_ConfigFile.GetReqDocDir();
FileDlg.Filter = "All Files (*.*)|*.*|Word 97-2003 (*.doc)|*.doc|Word 2007 (*.docx)|*.docx";
FileDlg.FilterIndex = 1;
if (FileDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
txtWordReqDoc.Text = FileDlg.FileName;
SetProgressControls(false);
}
this.btnExecute.Enabled = CanEnableExecuteBtn();
lblStatus.Visible = !(CanEnableExecuteBtn());
}
大约60%到70%的时间,此操作无法完成。出现了一个部分窗口,但此时它基本上就是死亡的窗口。我必须重新启动以恢复我的机器。这个问题似乎并不罕见。根据我的研究,大多数人似乎觉得这与线程有关。我的program.cs总是设置了这个属性。这是我的program.cs代码。
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
这只是某种线程争用吗?为什么它有时会工作而不能在其他时间工作? OpenFileDialogue应该在后台进程中运行吗?我调试时有一个问题的解决方法(基本上只是粘贴在文件路径中),我只是想在这里了解更多有关此行为的信息。