#.net #multithreading #visual-studio-2010 #debugging
#.net #многопоточность #visual-studio-2010 #отладка
Вопрос:
Мы только недавно обновились с VS2005 до VS2010. Я заметил, что в отличие от VS2005, когда отладочный код и среда разработки VS2010 IDE сталкиваются с операцией «Недопустимого перекрестного потока», среда разработки просто завершает работу приложения без «прерывания» в строке кода, которая вызывает проблему.
Я заглянул в раздел Debug> Exceptions в IDE, но я не нашел «Недопустимую операцию перекрестного потока» в качестве допустимой опции в системе.Пространство имен потоков. Я немного запутался в том, как заставить VS2010 IDE вести себя как VS2005 IDE, где это нарушило бы код и выделило строку, вызывающую недопустимую межпоточную операцию.
Кто-нибудь может мне здесь помочь?
Комментарии:
1. Можете ли вы попробовать включить прерывание для ВСЕХ исключений?
Ответ №1:
Измените все параметры в Debug > Exceptions на «Throwned» — Именно так вел себя старый VS.
Комментарии:
1. Я сделал, как вы предложили, включив все исключения CLR в значение thrown. Проблема с этим заключается в том, что каждая отдельная ошибка, независимо от того, находится ли она внутри TRY… CATCH приводит к сбою IDE. Это НЕ поведение старого VS.
Ответ №2:
Я обнаружил, что если я включу всю систему.Исключения при обработке потоков (даже если перекрестный поток отсутствует в списке), IDE теперь прерывается при ошибках перекрестного потока. Я понятия не имею, «какое» пространство имен исключений потоков содержит этот конкретный параметр, но теперь моя IDE работает так же, как VS2005.
Ответ №3:
Попробуйте систему.Исключение UnauthorizedAccessException. Это улавливает мои ошибки перекрестного потока
Ответ №4:
Это старый поток, но для Visual Studio 2017 я обычно получаю исключение межпотоковой операции в системе.Исключение InvalidOperationException.
Текст для исключения является:
System.InvalidOperationException: 'Cross-thread operation not valid: Control 'XXXX' accessed from a thread other than the thread it was created on.'
Я полагаю, что может быть множество операций, которые считаются ошибками «перекрестного потока», поэтому они могут подпадать под разные категории исключений.