簡體   English   中英

WPF應用程序崩潰,並顯示“ WindowsBase.dll中發生了'System.ComponentModel.Win32Exception類型的未處理的異常”

[英]WPF application crashes with “An unhandled exception of type 'System.ComponentModel.Win32Exception' occurred in WindowsBase.dll”

我正在開發一個使用.net 3.5的應用程序,該應用程序是32位,並且在64位Windows 7上使用。

調用showDialog()時,應用程序崩潰,下面是代碼段和引發的異常。

例外:

WindowsBase.dll中發生了'System.ComponentModel.Win32Exception'類型的未處理異常

附加信息:沒有足夠的配額來處理此命令

代碼段:

     try
        {
            WindowInteropHelper l_WndInteropHelper = new WindowInteropHelper(this);
            l_WndInteropHelper.Owner = f_pParentWnd;
            this.f_pParentWnd = f_pParentWnd;
            m_bWndDisplayed = true;

            this.ShowDialog();
            //reset to false as window will be closed by this time.
            m_bWndDisplayed = false;
        }
        catch (Exception ex)
        {}

當我使用同一應用程序的64位版本時,不會復制該問題。

以下是showDialog()與exception之間產生的調用堆棧。

->WindowsBase.dll!MS.Win32.UnsafeNativeMethods.PostMessage(System.Runtime.InteropServices.HandleRef hwnd, int msg, System.IntPtr wparam, System.IntPtr lparam) + 0x3d bytes 
->PresentationCore.dll!System.Windows.Interop.HwndTarget.UpdateWindowSettings(bool enableRenderTarget, System.Windows.Media.Composition.DUCE.ChannelSet? channelSet) + 0x3ce bytes  
->PresentationCore.dll!System.Windows.Interop.HwndTarget.UpdateWindowSettings(bool enableRenderTarget) + 0x2f bytes 
->PresentationCore.dll!System.Windows.Interop.HwndTarget.UpdateWindowPos(System.IntPtr lParam) + 0x185 bytes    
->PresentationCore.dll!System.Windows.Interop.HwndTarget.HandleMessage(int msg, System.IntPtr wparam, System.IntPtr lparam) + 0xff bytes    
->PresentationCore.dll!System.Windows.Interop.HwndSource.HwndTargetFilterMessage(System.IntPtr hwnd, int msg, System.IntPtr wParam, System.IntPtr lParam, ref bool handled) + 0x3a bytes    
->WindowsBase.dll!MS.Win32.HwndWrapper.WndProc(System.IntPtr hwnd, int msg, System.IntPtr wParam, System.IntPtr lParam, ref bool handled) + 0xbe bytes  
->WindowsBase.dll!MS.Win32.HwndSubclass.DispatcherCallbackOperation(object o) + 0x7a bytes  
->WindowsBase.dll!System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate callback, object args, bool isSingleParameter) + 0x8a bytes    
->WindowsBase.dll!System.Windows.Threading.ExceptionWrapper.TryCatchWhen(object source, System.Delegate callback, object args, bool isSingleParameter, System.Delegate catchHandler) + 0x4a bytes   
->WindowsBase.dll!System.Windows.Threading.Dispatcher.WrappedInvoke(System.Delegate callback, object args, bool isSingleParameter, System.Delegate catchHandler) + 0x44 bytes   
->WindowsBase.dll!System.Windows.Threading.Dispatcher.InvokeImpl(System.Windows.Threading.DispatcherPriority priority, System.TimeSpan timeout, System.Delegate method, object args, bool isSingleParameter) + 0x91 bytes   
->WindowsBase.dll!System.Windows.Threading.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority priority, System.Delegate method, object arg) + 0x40 bytes 
->WindowsBase.dll!MS.Win32.HwndSubclass.SubclassWndProc(System.IntPtr hwnd, int msg, System.IntPtr wParam, System.IntPtr lParam) + 0xdc bytes   
->[Native to Managed Transition]    
->user32.dll!74c362fa()
->[Frames below may be incorrect and/or missing, no symbols loaded for user32.dll]  
->user32.dll!74c37316()
->user32.dll!74c36ce9()
->user32.dll!74c36de8()
->user32.dll!74c38f09()
->ntdll.dll!76f1010a()
->user32.dll!74c38e63()
->[Managed to Native Transition]    
->PresentationFramework.dll!System.Windows.Window.SetupInitialState(double requestedTop, double requestedLeft, double requestedWidth, double requestedHeight) + 0x5a7 bytes 
->PresentationFramework.dll!System.Windows.Window.CreateSourceWindowImpl() + 0x19b bytes    
->PresentationFramework.dll!System.Windows.Window.SafeCreateWindow() + 0x29 bytes   
->PresentationFramework.dll!System.Windows.Window.ShowHelper(object booleanBox) + 0x81 bytes    
->PresentationFramework.dll!System.Windows.Window.Show() + 0x48 bytes   
->PresentationFramework.dll!System.Windows.Window.ShowDialog() + 0x29f bytes

您似乎要嘗試確定窗口所有者嗎? 無需執行此操作,只需將“ this”上的Owner設置為您要成為父級的“ Window”類型的另一個對象。

this.Owner = myParentWindow;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM