【发布时间】:2017-12-01 03:03:26
【问题描述】:
Visual Studio 2017 (有点突然)打破了所有异常。这意味着,如果我在异常设置中停用它们(在调试时按 CTRL + ALT + E),调试器仍然会中断它们。我不知道这只是 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) { }
它不会出现在我 PC 上的其他 IDE(如 Rider)中,也不会出现在 VS 中的其他 PC 上。它并不总是发生在我的电脑上,它最近才开始并且仅在调试模式下。如果我继续执行(使用 F5),它就会正常继续。
编辑当我将 try catch 放在线程中时,它的行为有点不同(我很抱歉在这里放了图片,但我认为在这种情况下它们更具表现力):
任何人可以解释这种行为吗?
EDIT ThreadAbortExceptions 在 catch 语句结束时再次中断似乎是正常的。但是,VS 仍然不应该在这个异常上中断。
【问题讨论】:
-
作为旁注:你的 try catch 应该在创建的线程内,当前你的 try catch 是在 UI 线程上,没有异常被捕获......
-
@M.kazemAkhgary 我编辑了我的问题
-
看 - 有时在无法以“正常”方式重现错误的情况下尝试查找和解释错误的时间太长了。 (1) 尝试重新启动并 (2) 恢复到您之前的代码并构建到该点。是的,我知道我的评论不是“答案”,但你可以花费数小时和数天徒劳地追踪这件事 - 最好继续前进。
-
@rlb.usa 已经尝试了多次重新启动,并且您可以看到其他代码(我实际上创建了一个新项目)也不起作用,那么为什么要恢复到以前的代码呢?我的意思是,没关系,我可以忍受这只是 VS 的另一个错误的可能性,我只是好奇,是否有人有解决方案。这非常烦人,因为我经常完全有意识地提出这个例外。
-
您可以在
msdn.microsoft.com上打开有关此问题的问题或通过选择VS 顶部的图标来报告错误,即send feedback然后report a problem,如果这确实是VS 中的错误,那么您最好有机会解决这个问题
标签: c# winforms visual-studio debugging visual-studio-2017