2015-02-11 78 views
3

我最近在安裝.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窗口

enter image description here 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

+0

會出現這種情況,如果你調用Show(),而不是ShowDialog的()? – 2015-02-11 22:11:17

+0

我有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

+1

在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

回答

2

這個問題在.NET 4.5.2(在Windows 7中)中是關於觸摸設備初始化的問題,並且有一個來自Microsoft的修補程序解決方案。

即使沒有觸摸設備存在,WPF應用程序也會啓動Windows Touch輸入服務(wisptis.exe),從而導致延遲,同時消息隊列被淹沒並且WPF窗口創建失敗。

的修補程序可以在這裏找到: https://support.microsoft.com/en-us/kb/3026376/

相關問題