申请关闭时的例外情况
本文关键字:情况 | 更新日期: 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 方法中,也可以检查应用程序是否在设计模式下运行。