Я получаю сообщение об ошибке, которое не могу устранить. Это происходит из Visual Studio или отладчика. Я не уверен, является ли окончательное состояние ошибки в VS, отладчике, моей программе или базе данных.
Это приложение для Windows. Не веб-приложение.
Первое сообщение от VS - это всплывающее окно, в котором говорится: «Ни для одного кадра стека вызовов не загружены символы. Исходный код не может быть отображен». Когда это щелкают, я получаю: « ContextSwitchDeadlock был обнаружен », наряду с длинным сообщением, воспроизведенным ниже.
Ошибка возникает в цикле, который просматривает DataTable. Для каждой строки он использует значение ключа (HIC #) из таблицы в качестве параметра для SqlCommand. Команда используется для создания SqlDataReader, который возвращает одну строку. Данные сравниваются. Если обнаружена ошибка, строка добавляется во второй DataTable.
Ошибка, по-видимому, связана с тем, сколько времени занимает процедура (т. Е. Через 60 секунд), а не с тем, сколько ошибок найдено. Я не думаю, что это проблема памяти. В цикле не объявляются переменные. Единственными объектами, которые создаются, являются SqlDataReaders, и они находятся в структуре Using. Добавление System.GC.Collect () не дало эффекта.
БД - это сайт SqlServer на том же ноутбуке.
Там нет никаких причудливых вещиц или гаджетов в форме.
Я не знаю ничего в этом процессе, что сильно отличается от того, что я делал десятки раз раньше. Я видел ошибку раньше, но никогда не на постоянной основе.
Любые идеи, кто-нибудь?
Полная ошибка Текст: CLR не удалось перейти из контекста COM 0x1a0b88 в контекст COM 0x1a0cf8 в течение 60 секунд. Поток, который владеет целевым контекстом / квартирой, скорее всего либо выполняет некачивающее ожидание, либо обрабатывает очень длительную операцию без прокачки сообщений Windows. Эта ситуация, как правило, оказывает негативное влияние на производительность и может даже привести к тому, что приложение перестает отвечать на запросы или использование памяти постоянно увеличивается с течением времени. Чтобы избежать этой проблемы, все потоки однопотоковых квартир (STA) должны использовать примитивы перекачки ожидания (такие как CoWaitForMultipleHandles) и регулярно перекачивать сообщения во время длительных операций.