У меня есть программа, которую я запускаю, и в середине я получаю это сообщение:
Помощник по управляемой отладке ContextSwitchDeadlock обнаружил проблему в C: \ Documents and Settings \ Lena G \ Мои документы \ SchoolStuff \ IR Information \ Домашняя работа \ FianlProject \ finalProject \ finalProject \ bin \ Debug \ finalProject.vshost. EXE'.
Дополнительная информация: CLR не удалось перейти из контекста COM 0x3407968 в контекст COM 0x3407ad8 в течение 60 секунд. Поток, которому принадлежит целевой контекст / квартира, скорее всего, либо делает ожидание без перекачки, либо обрабатывает очень длительную операцию без перекачки сообщений Windows. Эта ситуация, как правило, оказывает негативное влияние на производительность и может даже привести к тому, что приложение перестает отвечать на запросы или использование памяти постоянно увеличивается с течением времени. Чтобы избежать этой проблемы, все потоки однопотоковых квартир (STA) должны использовать примитивы перекачки (такие как CoWaitForMultipleHandles) и регулярно перекачивать сообщения во время длительных операций.
Я так понимаю, это как-то связано с тем, что он работает 60 секунд без остановки или что-то в этом роде? Как это проблема?
Я также помещаю [STAThread] перед основной частью моей программы, потому что, если я удаляю ее, она показывает мне следующее сообщение:
Необработанное исключение типа 'System.Threading.ThreadStateException' произошло в System.Windows.Forms.dll
Дополнительная информация: Для выполнения OLE-вызовов текущий поток должен быть установлен в однопотоковый режим (STA). Убедитесь, что на вашей главной функции помечен атрибут STAThreadAttribute. Это исключение возникает только в том случае, если к процессу подключен отладчик.
Кто-нибудь знает, как я могу решить эту проблему?
Заранее спасибо,
Lena