Я пытаюсь отладить приложение .NET 3.5, которое использует WPF.На большинстве наших машин приложение запускается нормально, но у нас есть одна машина, на которой приложение зависает на первом .Show()
.Процесс, кажется, вращается с полной загрузкой процессора, и в конечном итоге (если я подключен с помощью отладчика), я получаю:
Помощник по управляемой отладке 'ContextSwitchDeadlock' обнаружил проблему в 'D: \ Projects.... \ foobar.exe.Дополнительная информация: CLR не удалось перейти из контекста COM 0x1aa168 в контекст COM 0x1a9ff8 в течение 60 секунд.Поток, которому принадлежит целевой контекст / квартира, скорее всего, либо делает ожидание без перекачки, либо обрабатывает очень длительную операцию без перекачки сообщений Windows.Эта ситуация, как правило, оказывает негативное влияние на производительность и может даже привести к тому, что приложение перестает отвечать на запросы или использование памяти постоянно увеличивается с течением времени.Чтобы избежать этой проблемы, все потоки однопотоковых квартир (STA) должны использовать примитивы перекачки (такие как CoWaitForMultipleHandles) и регулярно перекачивать сообщения во время длительных операций.
Я прошу прощения за любые ошибки транскрипциивыше, я не могу скопировать и вставить текст.
Система, в которой это происходит, работает под управлением Windows XP SP3.У нас есть другие системы с Windows XP SP3, на которых наше программное обеспечение работает нормально.
Стоп вызова в точке зависания выглядит следующим образом:
[Внешний код]
PresentationNative_v0300.dll! FetchRun () + 0x90 байт PresentationNative_v0300.dll!_LsSetParaProperties@24 () + 0x71 байт
PresentationNative_v0300.dll!_LsCreateLineCore@44 () + 0x12c байт
PresentationNative_v0300re0 040 (040) @ 0байт foobar.exe! FooBar.Window1.Window1 () Строка 109 + 0x10 байт C # [внешний код]
user32.dll!_InternalCallWinProc@20 () + 0x28 байт
user32.dll!_UserCallWinProcCheckWow@32 () +0xb7 байт
user32.dll!_DispatchMessageWorker@8 () + 0xdc байт
user32.dll!_DispatchMessageW@4 () + 0xf байт mscoree.dll! __ CorExeMain @ 0 () + 0x32 байт
mscoree.dll! _ShellShim__CorExeMain @ 0 () + 0x3a4e байтов
mscoree.dll! __ CorExeMain_Exported @ 0 () + 0x8 байтов
kernel32.dll!_BaseProcessStart@4 () + 0x23 байтов
кому угодноесть какой-либо идентификаторЧто может быть причиной этого?
Я постараюсь переустановить .NET 3.5 в ближайшее время, но, честно говоря, мы держимся за соломинку.