2011-02-02 10 views
11

Podczas debugowania aplikacji pojawia się następujący błąd.Aplikacja CLR nie może przejść z kontekstu COM 0x3b2d70 do kontekstu COM

Środowisko CLR nie może przejść z kontekstu COM 0x3b2d70 do kontekstu COM 0x3b2ee0 przez 60 sekund. Wątek, który jest właścicielem kontekstu docelowego/mieszkania, najprawdopodobniej robi czekanie bez pompowania lub przetwarza bardzo długą operację bez pompowania komunikatów systemu Windows. Sytuacja ta ma ogólnie negatywny wpływ na wydajność, a nawet może prowadzić do braku reakcji aplikacji lub zużycia pamięci przez cały czas. Aby uniknąć tego problemu, wszystkie wątki z pojedynczym gwintowanym mieszkaniem (STA) powinny korzystać z podstawowych operacji pompowania (takich jak CoWaitForMultipleHandles) i rutynowo pompować komunikaty podczas długotrwałych operacji.

Dlaczego system zgłasza ten błąd.

+1

Proponuję, abyś dodał więcej szczegółów do swojego pytania, może zamieścił kod, który pozwoli uniknąć błędu. –

Odpowiedz

13

mam rozwiązanie

potrzebę odznacz ContextSwitchDeadlock pod Debug-> Exceptions-> Zarządzalne asystentów debugowania.

Po usunięciu zaznaczenia ContextSwitchDeadlock nie spowoduje to błędu.

+50

Tak, ponieważ VS ** ukrywa ** to. To nie znaczy, że problem już minął! – Odys

+0

@odyodyodys Jestem szczególnie zadowolony, że nie ukryłem wyjątku, ponieważ problem powodujący wyjątek powodował, że moja aplikacja czekała 60 sekund na ekranie powitalnym bez wyraźnego powodu. Nie możesz naprawić błędów, których nie możesz znaleźć. – erodewald

+2

Jedyną rzeczą gorszą niż niewiedzenie, dlaczego coś jest nie ** nie działa, nie wie, dlaczego coś ** działa **. –

Powiązane problemy