在过去的几年里,我一直在混合模式应用程序中使用 WPF 来显示各种零碎的 UI。 C# 程序集使用 WPF 来生成 UI - 它引用包含一些 native 代码的 C++/CLI 构建的程序集。 native 代码除了几个 printf 之外不进行操作系统调用;它纯粹是计算性的。
在连接调试器的情况下运行时,我在关闭应用程序后看到托管调试助手“RaceOnRCWCleanup”启动 - 这表明存在一些具有多线程清理问题的 COM 组件。
我没有直接以任何方式使用 COM,但也许 C++/CLI 或 WPF 是。关于应用程序关闭的警告并不是特别可怕 - 毕竟,该应用程序无论如何都会退出 - 但我很想知道出了什么问题。我能做些什么来避免这个警告吗?某处是否有隐藏的错误等着咬我,还是虚假警告?
这是一个示例堆栈跟踪:
mscorlib.dll!System.Runtime.InteropServices.Marshal.ReleaseComObject(object o) Line 1826 + 0xc bytes C#
PresentationFramework.dll!System.Windows.Documents.TextServicesHost.DeactivateThreadManager() Line 465 + 0xd bytes C#
PresentationFramework.dll!System.Windows.Documents.TextServicesHost.OnUnregisterTextStore(object arg) Line 331 C#
PresentationFramework.dll!System.Windows.Documents.TextEditor.DetachTextStore(bool finalizer) Line 249 + 0x6b bytes C#
WindowsBase.dll!System.Windows.Threading.Dispatcher.ShutdownImplInSecurityContext(object state) Line 1363 + 0xfffffffc bytes C#
mscorlib.dll!System.Threading.ExecutionContext.runTryCode(object userData) Line 484 + 0xce bytes C#
有没有人遇到过同样的问题?有人知道发生了什么吗?
最佳答案
你什么时候得到这个异常?我今天也是第一次在我们的 wpf 业务应用程序上得到它。每次关闭应用程序时它都会连续发生,而没有进行重大更改。也许某些 Windows 更新是邪恶的根源?我们也没有弄清楚它来自哪里,也没有弄清楚如何预防它。一旦我们设法解决了异常,我就会发布解决方案。我不认为它与您的 C++/CLI 程序集有关。我们不使用 C++/CLI 程序集。
简
关于.net - 关闭 WPF 应用程序时 RaceOnRCWCleanup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4079988/