Bla*_*Box 5 c# wpf multithreading openfiledialog mahapps.metro
在我WPF使用Caliburn.Micro和MahApps.Metro框架的应用程序中,我打开OpenFileDialog了System.Windows.Forms命名空间中的实例。打开和关闭此对话框后,我的应用程序的其余部分挂起大约 3 到 4 秒。使用Microsoft.Win32命名空间时也是如此。
我自己做了一些研究,并提出了一些抱怨同一问题的帖子,他们找到的解决方案有两个:
ShowHelp属性设置为trueSingle Threaded Apartment模式下运行。该ShowHelp修复程序通过使用非 vista 样式对话框对我有用,但从UXWindows Vista 和更新版本的角度来看,它看起来不正确。对我来说另一件事是确保它处于STA模式下。
WPFSTA默认情况下使用,但我尝试编写自己的主要方法并明确说明[STA]但没有运气。我将以下代码段添加到我的代码中,但输出为State: STA,表明应该没有问题。
Console.WriteLine("State: {0}", System.Threading.Thread.CurrentThread.GetApartmentState());
var dialog = new OpenFileDialog
Run Code Online (Sandbox Code Playgroud)
我也试过OpenFileDialog在一个新STA线程上启动它,虽然它启动并且没有挂起我的应用程序,但它也不再是模态的。我也尝试加入新线程,但关闭后它仍然挂起。
是否存在已知的潜在问题,OpenFileDialog如果有,是否有启动 FileDialogs 的替代方法可以避免这种挂起?
来源ShowHelp和STA评论:
| 归档时间: |
|
| 查看次数: |
471 次 |
| 最近记录: |