Visual Studio 2017 (внезапно) разрушает все исключения. Это означает, что если я деактивирую их в настройках исключений (нажимая CTRL + ALT + E во время отладки), отладчик все равно ломается. Я не знаю, является ли это просто ошибкой VS, которую я не могу изменить, и поэтому приходится с ней жить, или же есть простое решение для этого.
и это исключение VS разбивается на:
Кстати, я также пробовал этот прекрасный минус (ничего не происходит, если я нажимаю на него) или добавлял невозможное условие (VS все еще нарушал исключение).
Я также протестировал другие исключения (просто выбрасывая их), которые я ранее деактивировал, и они также были выброшены, и я протестировал ту же проблему в других проектах, где она также появилась:
На самом деле я даже поместил весь материал в оператор try catch, но VS все еще ломается:
InitializeComponent ();
try
{
var t = new Thread (() =>
{
while (!IsHandleCreated) {} //It breaks here (similiar to the screenshots)
while (true)
Invoke (new Action (() => Size = new Size ()));
});
while (true)
{
t.Start ();
Thread.Sleep (100);
t.Abort ();
}
}
catch (ThreadAbortException) { }
Он не отображается в других средах разработки (например, Rider) на моем ПК и не встречается на других ПК в VS. Это не всегда происходило на моем ПК, оно только началось недавно и только в режиме отладки. И если я продолжу выполнение (с помощью F5), оно просто продолжится нормально.
РЕДАКТИРОВАТЬ Когда я поместил try-catch внутри потока, он вел себя немного по-другому (извините за то, что выложил сюда картинки, но я думаю, что в этом случае они более выразительны):
Кто-нибудь может объяснить это поведение?
РЕДАКТИРОВАТЬ Кажется нормальным, чтобы ThreadAbortExceptions
снова прерывался в конце оператора catch. Тем не менее, VS все равно не должен нарушать это исключение.