我最近在安装.Net 4.5.2的Windows 7 32位操作系统上遇到了一个问题。我有一个应用程序是Winforms并打开一个模式WPF窗口。但是,因为我们安装了.Net Framework 4.5.2,所以这些窗口无法正常打开,一旦窗口调用.ShowDialog()需要大约15-20秒(鼠标转向指针几秒钟,winforms窗口变得无响应),然后我们会收到以下异常:从WinForms应用程序(.Net 4.5.2/Win 7/32 Bit)打开WPF窗口
System.ComponentModel.Win32Exception(0x80004005的):没有足够配额可用来处理该命令
奇怪的是,一旦这种异常被抛出,我选择“继续”,下次我尝试打开窗口时,它会立即打开并且不会抛出异常。
以下是我用来打开窗口的简化版本。 (当我运行该代码时,应用程序不会抛出异常,但它确实挂了15-20秒)
private void OpenWpfWindow(object sender, EventArgs e)
{
WPFWindow testWindow = new WPFWindow();
testWindow.Visibility = System.Windows.Visibility.Visible;
testWindow.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;
System.Windows.Interop.WindowInteropHelper helper = new System.Windows.Interop.WindowInteropHelper(testWindow);
helper.Owner = System.Windows.Forms.Application.OpenForms[0].Handle;
testWindow.ShowDialog();
}
我们没有遇到此问题与Windows 7,并与安装了.NET 4.5
会出现这种情况,如果你调用Show(),而不是ShowDialog的()? – 2015-02-11 22:11:17
我有Windows 8的64位.NET 4.5.2,VS2013更新4,该代码运行良好。我将Winforms应用程序设置为x86,它仍然工作。具体来说:我创建了一个新的Winforms应用程序,新的WPF应用程序,将Winforms的引用添加到WPF应用程序+ PresentationBase等等。新建按钮,单击事件指向您的OpenWpfWindow函数。运行应用程序,单击按钮,出现WPF窗口。花了大约5秒钟才出现。 – 2015-02-11 22:23:01
在MSDN论坛上有一连串帖子似乎暗示显示窗口可能会填充消息队列。从以下链接开始:https://social.msdn.microsoft.com/Forums/vstudio/en-US/6e94283a-76be-42b3-98e6-a8e18c4e43de/invisible-wpf-dialog-filling-up-windows- message-queue?forum = wpf – 2015-02-11 22:26:08