关闭OpenFileDialog会导致应用程序挂起3-4秒

时间:2017-01-27 12:29:42

标签: c# wpf multithreading openfiledialog mahapps.metro

在使用WPFCaliburn.Micro框架的MahApps.Metro应用程序中,我从OpenFileDialog命名空间打开System.Windows.Forms的实例。打开和关闭此对话框后,我的应用程序的其余部分将挂起大约3到4秒。使用Microsoft.Win32命名空间时也是如此。

我自己做了一些研究,并提出了一些抱怨同样问题的帖子,他们找到的解决方案有两个:

  1. 快速修复:将ShowHelp属性设置为true
  2. 正确修复:确保它以Single Threaded Apartment模式运行。
  3. ShowHelp修复程序通过使用非vista样式对话框为我工作,但从UX角度对Windows Vista及更新版本来说,它看起来并不正确。对我来说另一件事就是确保它处于STA模式。

    默认情况下,

    WPF使用STA,但我尝试编写自己的main方法并明确声明[STA]但没有运气。我在代码中添加了以下代码段,但输出为State: STA,表示不存在任何问题。

    Console.WriteLine("State: {0}", System.Threading.Thread.CurrentThread.GetApartmentState());
    var dialog = new OpenFileDialog
    

    我还尝试在新的OpenFileDialog主题上启动STA,当它启动并且不挂起我的应用程序时,它也不再是模态的。我也尝试过加入新主题,但结束后仍然会挂起。

    问题

    OpenFileDialog是否存在已知的潜在问题,如果有,是否有其他方法可以启动FileDialogs以避免此问题?

    ShowHelpSTA评论的来源:

0 个答案:

没有答案