В течение последних нескольких лет я использовал WPF в приложении с смешанным режимом для отображения различных битов & элементов пользовательского интерфейса. WPF используется сборкой C# для создания пользовательского интерфейса - он ссылается на сборку на C++/CLI, которая содержит некоторый собственный код. Нативный код не вызывает вызовов ОС за пределами нескольких printf; это чисто вычислительная.RaceOnRCWCleanup при закрытии приложений WPF
При запуске с прикрепленным отладчиком, я вижу управляемый помощник отладки «RaceOnRCWCleanup» после закрытия приложения, что указывает на наличие некоторого COM-компонента с проблемами очистки многопоточности.
Я не использую COM в любой форме напрямую, но, возможно, C++/CLI или WPF. Предупреждения об отключении приложений не особенно страшны - ведь приложение все равно выходит, но я хотел бы понять, что происходит не так. Могу ли я сделать что-нибудь, чтобы избежать этого предупреждения? Есть ли скрытая ошибка где-то, которая просто ждет, чтобы укусить меня, или это ложное предупреждение?
Это пример StackTrace:
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. –