gpt4 book ai didi

wpf - "Invalid Window Handle"退出使用 System.AddIn 的 WPF 应用程序

转载 作者:行者123 更新时间:2023-12-04 19:40:30 27 4
gpt4 key购买 nike

我正在开发一个 WPF 应用程序,该应用程序使用 System.AddIn 来解决我们在使用 WindowsFormsHost 控件中包装的基于 Windows 窗体的控件时遇到的内存泄漏问题。该加载项用于根据需要加载和卸载基于 Windows 窗体的控件,以避免 WindowsFormsHost 的开销,该开销将一直挂到当前版本的 WPF 中的应用程序关闭以及由于基于 Windows 窗体的控件中的内存泄漏糟糕的清理逻辑。

我们面临的问题是,在应用程序中加载和卸载加载项后,WPF 应用程序将在应用程序退出时抛出“无效窗口句柄”的 Win32 异常。这通常不是一个可怕的问题,但是即使可以捕获异常,它也不会阻止 Windows 将应用程序视为崩溃并在 Windows 7 下显示崩溃对话框,这是 Not Acceptable 。

关于代码的相关事实是:

  • 仅当 WPF 主机应用程序加载和卸载加载项时才会发生异常。我们将在加载项中处理 WindowsFormsHost 控件和基于 Windows 窗体的控件,作为在卸载加载项之前调用的自定义 Dispose 方法的一部分。
  • 加载项在卸载之前关闭其调度程序(作为上述处理过程的一部分),这在 MSDN 文档和博客文章中已经指出是必需的,并且还解决了在这种情况下没有发生的问题。
  • 我们没有选择使用基于 Windows 窗体的控件,因为它是某些报表所必需的,并且要转换的报表文件太多,没有合适的 WPF 版本,也没有时间更改它。

  • 我无法提供代码示例,因此我正在寻求任何想法或以前对这种情况的经验,以防万一我错过了什么。

    最佳答案

    不久前我遇到了类似的问题。我看到我打电话Dispatcher.InvokeShutdown (在测试控件的内容不为空之后)在我的主窗口的 Window_Closing 中事件处理程序,似乎还记得它是解决方案。

    关于wpf - "Invalid Window Handle"退出使用 System.AddIn 的 WPF 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2053538/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com