WPF: Интеграция в WinForms Ошибка - «CLR не смог перейти из контекста COM 0x1a8188 в контекст COM 0x1a8018 в течение 60 секунд» - PullRequest
0 голосов
/ 10 мая 2011

Полная ошибка, которую я получаю, выглядит следующим образом:

CLR не удалось перейти из контекста COM 0x1a8188 в контекст COM 0x1a8018 в течение 60 секунд. Поток, которому принадлежит целевой контекст / квартира, скорее всего, либо делает ожидание без перекачки, либо обрабатывает очень длительную операцию без перекачки сообщений Windows. Эта ситуация, как правило, оказывает негативное влияние на производительность и может даже привести к тому, что приложение перестает отвечать на запросы или использование памяти постоянно увеличивается с течением времени. Чтобы избежать этой проблемы, все потоки однопоточных квартир (STA) должны использовать примитивы перекачки (такие как CoWaitForMultipleHandles) и регулярно перекачивать сообщения во время длительных операций.

Есть идеи, что это значит? И как это должно быть решено? Я попытался выполнить поиск в Google, но не смог найти ничего полезного, т. Е. Связанного с моим конкретным сценарием.

Edit: Конкретный сценарий: 1. Интеграция WPF в WinForms 2. Экраны WPF написаны для плагина dll, который динамически загружается в основное приложение.

Спасибо

Hasanain

1 Ответ

1 голос
/ 10 мая 2011

Это означает, что вы создали объект в потоке A, а затем попытались использовать его в потоке B, но поток A был действительно занят, а COM-объект требует, чтобы он работал в потоке A. Попробуйте выяснить, почему поток A занят ,

...