简体   繁体   中英

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

I am developing an application which uses .net 3.5, application is 32 bit and is used on 64 bit windows 7.

The application crashes when showDialog() is called, following is the code snippet and Exception thrown.

Exception:

An unhandled exception of type 'System.ComponentModel.Win32Exception' occurred in WindowsBase.dll

Additional information: Not enough quota is available to process this command

Code Snippet:

     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)
        {}

The problem is not replicated when i use 64bit version of same application.

following is the call stack produced between showDialog() and 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

It looks like you are trying to pinvoke to determine the window owner? Instead of doing that, simply set Owner on 'this' to the other object of type 'Window' that you want to be the parent.

this.Owner = myParentWindow;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM