.net - 关闭 WPF 应用程序时 RaceOnRCWCleanup

标签 .net wpf clr race-condition

在过去的几年里,我一直在混合模式应用程序中使用 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/

相关文章:

c# - 如何添加额外的路线?

c# - 如何将 "Load More"按钮添加到列表框结果的底部?

c# - 是否可以在变量名的名称中使用变量号?

c# - wpf C# 中的进度条

c# - 在 C# 中注册

c# - 在详细部分删除 Crystal 报告中的额外行

c# - 如何计算 WPF 可视元素的逻辑宽度?

c# - 如何将属性绑定(bind)到 WPF 中 Treeview 中的选定节点

.net - 如何在运行时向类型解析添加额外的逻辑?

.net - .NET CLR 如何区分托管指针和非托管指针?