У меня есть класс в C # (.net 3.5 cp, vs2010), который выполняет сложные операции, которые обычно занимают много времени. Через минуту возникает исключение, что обнаружен ContextSwitchDeadlock. Исключение локализовано на мой неанглийский язык, поэтому я не могу скопировать вставку, но смысл следующий: ¨ Модуль CLR не может перейти из контекста COM ... в контекст COM ... для 60 секунд.Подпроцессы, которым принадлежит целевой контекст / квартира, вероятно, выполняют ожидание без перекачки или обрабатывают очень длительную операцию без перекачки системных сообщений Windows.
По сути, похоже, что мое приложение выполняет вычисления и долгое время не отвечает на запросы Windows, и Visual Studio закрывает его и сообщает о вероятной тупиковой ситуации.
Я пытался провести небольшое исследование и нашел два решения:
Отключить некоторые опции в отладчике Visual Studio для обнаружения взаимоблокировок. Не работает для меня, потому что он работает только для целей отладки.
Вызов некоторого метода DoEvents, но он был для форм Windows, а не WPF, и я использую WPF.
Также было предложение создать отдельный поток, но я новичок в потоках и не знаю, что мне делать. Есть предложения, пожалуйста?