RaceOnRCWCleanup при закрытии приложений WPF - PullRequest
7 голосов
/ 02 ноября 2010

В течение последних нескольких лет я использовал WPF в смешанном режиме приложения для отображения различных элементов пользовательского интерфейса. WPF используется сборкой C # для генерации пользовательского интерфейса - он ссылается на сборку C ++ / CLI, которая содержит некоторый собственный код. Нативный код не делает никаких вызовов ОС, за исключением нескольких 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#

Кто-нибудь испытывал такую ​​же проблему? Кто-нибудь знает, что происходит?

1 Ответ

1 голос
/ 03 ноября 2010

С каких это пор вы получаете это исключение? Я также получил это сегодня впервые в нашем бизнес-приложении wpf. Это происходит непрерывно каждый раз, когда я закрываю приложение, не внося серьезных изменений. Может быть, какое-то обновление Windows является источником зла? Мы также еще не выяснили, откуда это исходит, и как это предотвратить. Я опубликую решение, как только нам удастся разрешить исключение. Я не думаю, что это как-то связано с вашей сборкой C ++ / CLI. Мы не используем сборки C ++ / CLI.

Jan

...