关闭WPF应用程序时的RaceOnRCWCleanup

7
在过去的几年中,我一直在使用WPF在混合模式应用程序中显示各种UI元素。 WPF由C#程序集用于生成UI - 它引用了一个包含一些本地代码的C ++ / CLI构建的程序集。 本地代码没有进行任何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#

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


我们在将项目从.Net 3.5升级到4.0后才开始遇到这个问题。 - a_hardin
1个回答

1

你从什么时候开始遇到这个异常?我今天在我们的wpf业务应用程序上第一次遇到它。每次关闭应用程序时都会连续发生,而没有进行重大更改。也许某个Windows更新是罪魁祸首?我们还没有找出它来自哪里,也不知道如何防止它。一旦我们成功解决了这个异常,我会尽快发布解决方案。我认为这与你的C++/CLI程序集无关。我们不使用C++/CLI程序集。

Jan


1
我相当确定我从很久以前就一直遇到这个错误了。通常我会忽略它(在VS中未选中MDA),所以也许有一段时间它能正常工作;但我肯定至少在一年前看到过它 - 也许更久。 - Eamon Nerbonne
1
嗯,好的,我的Windows更新理论可以被搁置了。疯狂的是:昨天几乎每次关闭应用程序都能重现这个问题。但今天它完全没有出现...所以下次我遇到它时,我会尝试使用.NET Reflector Pro找到更具体的来源。感谢您的回复。 - JanW
我们可能看到的是完全不同的事情,但如果你最终搞清楚了它是什么,请务必发帖分享! - Eamon Nerbonne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接