我开发了一个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;
}
我正在使用它检查代码是否在设计器中运行。但是在关闭此代码失败时,虽然我抓住了异常。
检查设计模式还有其他想法吗? 谢谢你的帮助。
答案 0 :(得分:0)
回答我自己的问题......
我可以通过为IsInDesignMode属性实现支持字段来解决问题。 支持字段现在将在ViewModel的构造函数中设置,而不是我之前在每个方法调用上检查DesignMode的解决方案。
这意味着,即使在Dispose方法中,也可以检查应用程序是否在DesignMode中运行。