我有一个C#应用程序,它在系统托盘中有一个图标。 当用户右键单击它时,它将显示一个菜单。
当用户点击1. open file
时,它会显示(ShowDialog)带有两个按钮的表单
当用户点击1. open file
时,它会执行
OpenFileDialog openFile = new OpenFileDialog();
openFile.Filter = "All files (*.*)|*.*";
DialogResult result = openFile.ShowDialog(); // deadlock here
if (result == DialogResult.OK){
// do some thing
}
第3行应用死锁
您能否帮助解释出现此问题的原因?
更新答案
thread.SetApartmentState(ApartmentState.STA);
,OpenFileDialog将显示。答案 0 :(得分:-2)
openFile.ShowDialog();
表示将打开当前表单的模态窗口(创建对话框的表单)
答案 1 :(得分:-2)
尝试从单独的线程打开对话框,并在返回时回调。 ShowDialogue阻止当前线程,因为您正在等待对话的响应以继续您的应用程序行为 - 这意味着您的应用程序将一直挂起,直到它完成。