关闭WPF应用程序时的RaceOnRCWCleanup

时间:2010-11-02 16:44:54

标签: .net wpf clr race-condition

在过去的几年里,我一直在混合模式的应用程序中使用WPF来显示各种位和& UI片断。 C#程序集使用WPF生成UI - 它引用包含一些本机代码的C ++ / CLI构建的程序集。本机代码不会在少数printf之外调用OS;这纯粹是计算机。

当附加调试器运行时,我看到关闭应用程序后,托管调试助手“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#

有没有人遇到过同样的问题?有人知道发生了什么吗?

1 个答案:

答案 0 :(得分:1)

从什么时候开始这个例外?我今天也第一次在我们的wpf业务应用程序中得到它。每次关闭应用程序时都会连续发生,而不会进行重大更改。也许某些Windows Update是邪恶的根源?我们也没有弄清楚它来自何处,也没有预防如何防止它。一旦我们设法解决了异常,我就会发布一个解决方案。我不认为它与您的C ++ / CLI程序集有关。我们不使用C ++ / CLI程序集。