为什么OpenFileDialog没有打开?

时间:2016-11-04 08:57:10

标签: c# openfiledialog

我有一个C#应用程序,它在系统托盘中有一个图标。 当用户右键单击它时,它将显示一个菜单。

  1. 打开文件
  2. 出口
  3. 当用户点击1. open file时,它会显示(ShowDialog)带有两个按钮的表单

    1. 打开文件
    2. 靠近
    3. 当用户点击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行应用死锁

      1. 用户无法与表单互动,也不会回复
      2. OpenFileDialog不显示
      3. 您能否帮助解释出现此问题的原因?

        更新答案

        1. 从另一个线程调用在系统托盘中创建图标的表单。
        2. 我设置:thread.SetApartmentState(ApartmentState.STA);,OpenFileDialog将显示。

2 个答案:

答案 0 :(得分:-2)

openFile.ShowDialog(); 

表示将打开当前表单的模态窗口(创建对话框的表单)

答案 1 :(得分:-2)

尝试从单独的线程打开对话框,并在返回时回调。 ShowDialogue阻止当前线程,因为您正在等待对话的响应以继续您的应用程序行为 - 这意味着您的应用程序将一直挂起,直到它完成。