申请关闭时的例外情况

本文关键字:情况 | 更新日期: 2024-10-25 18:19:56

我开发了一个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;
        }

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

还有其他想法可以检查设计模式吗?感谢您的帮助。

申请关闭时的例外情况

回答我自己的问题...

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

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