在使用WPF
和Caliburn.Micro
框架的MahApps.Metro
应用程序中,我从OpenFileDialog
命名空间打开System.Windows.Forms
的实例。打开和关闭此对话框后,我的应用程序的其余部分将挂起大约3到4秒。使用Microsoft.Win32
命名空间时也是如此。
我自己做了一些研究,并提出了一些抱怨同样问题的帖子,他们找到的解决方案有两个:
ShowHelp
属性设置为true
Single Threaded Apartment
模式运行。 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以避免此问题?
ShowHelp
和STA
评论的来源: