0

当我们的应用程序正常退出时,在 64 位平台上也不例外。在 32 位平台上,我们得到这个非常无用的异常,在 Windows XP 上显示为系统错误:

InvalidOperationException:句柄未初始化。
    在 System.WeakReference.set_Target(对象值)
    在 System.Windows.Threading.Dispatcher.FromThread(线程线程)
    在 MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd,Int32 msg,IntPtr wParam,IntPtr lParam)
    在 MS.Win32.UnsafeNativeMethods.IntDestroyWindow(HandleRef hWnd)
    在 MS.Win32.HwndWrapper.DestroyWindow(对象参数)
    在 MS.Win32.HwndWrapper.Dispose(布尔处理,布尔 isHwndBeingDestroyed)
    在 MS.Win32.HwndWrapper.Finalize()

我们能够确定这是在完成过程中引发异常的问题。通过蛮力和一点运气,我们能够解决一些问题,这样如果用户在没有加载任何文件的情况下打开和关闭应用程序,它就会干净地关闭。一旦用户打开一个文件、运行并关闭应用程序,异常就会在关机时出现——但仅在 32 位机器上。

在应用程序退出和处理 Application.Exit 事件后都会引发 InvalidOperationException。问题是规模问题。我一直试图通过清理和修复终结器并处理方法问题来强行使用我的方式。由于误解了哪个对象是父对象和子对象,该过程还引入了一些错误。我需要找出哪些类在终结期间抛出异常(很可能是空指针异常),哪些没有。

4

0 回答 0