应用程序关闭的例外情况

时间:2012-08-07 13:09:43

标签: c# wpf invalidoperationexception

我开发了一个WPF应用程序,在关闭应用程序时遇到问题。

仅在Windows 2003 PC上,应用程序在关闭时会抛出以下异常。但它似乎并没有从我的代码中抛出,因为我无法获得一个callstack。

这就是为什么我不能发布任何进一步的细节。

你有什么线索我可以开始深入研究吗?

System.InvalidOperationException was unhandled
  Message=Handle is not initialized.
  Source=mscorlib
  StackTrace:
       at System.WeakReference.set_Target(Object value)
       at System.Windows.Threading.Dispatcher.FromThread(Thread thread)
       at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
       at MS.Win32.UnsafeNativeMethods.IntDestroyWindow(HandleRef hWnd)
       at MS.Win32.HwndWrapper.DestroyWindow(Object args)
       at MS.Win32.HwndWrapper.Dispose(Boolean disposing, Boolean isHwndBeingDestroyed)
       at MS.Win32.HwndWrapper.Finalize()
  InnerException: 

感谢您的想法。

修改 我发现哪行代码会导致失败。但我该如何解决呢?

这是以下代码行:

        try
        {
            return DesignerProperties.GetIsInDesignMode(new DependencyObject());
        }
        catch (Exception)
        {
            return true;
        }

我正在使用它检查代码是否在设计器中运行。但是在关闭此代码失败时,虽然我抓住了异常。

检查设计模式还有其他想法吗? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

回答我自己的问题......

我可以通过为IsInDesignMode属性实现支持字段来解决问题。 支持字段现在将在ViewModel的构造函数中设置,而不是我之前在每个方法调用上检查DesignMode的解决方案。

这意味着,即使在Dispose方法中,也可以检查应用程序是否在DesignMode中运行。