WPF应用程序崩溃"未处理的类型' System.ComponentModel.Win32Exception'发生在WindowsBase.dll"

时间:2014-10-01 11:37:02

标签: c# .net windows exception

我正在开发一个使用.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()和异常之间产生的调用堆栈。

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

1 个答案:

答案 0 :(得分:0)

看起来你正试图确定窗户所有者?而不是这样做,只需将所有者设置为'这个'对于' Window'类型的另一个对象你想成为父母。

this.Owner = myParentWindow;