0

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

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

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

你知道我可以从哪里开始研究它吗?

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

我正在使用它来检查代码是否在设计器中运行。但是在关闭此代码时失败,尽管我发现了异常。

检查设计模式的任何其他想法?谢谢你的帮助。

4

1 回答 1

0

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

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

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

于 2012-08-10T06:44:51.393 回答