Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 停止Visual Studio在任务中因异常而中断_C#_Visual Studio 2010_Debugging_Visual Studio Debugging - Fatal编程技术网

C# 停止Visual Studio在任务中因异常而中断

C# 停止Visual Studio在任务中因异常而中断,c#,visual-studio-2010,debugging,visual-studio-debugging,C#,Visual Studio 2010,Debugging,Visual Studio Debugging,我有以下代码: Task load = Task.Factory.StartNew(() => {//Some Stuff Which Throws an Exception}); try { load.Wait(); } catch (AggregateException ex) { MessageBox.Show("Error!"); } 每当在任务中抛出异常时,我希望它冒泡并在try-catch中被捕获,而不是VisualStudio在异常发生

我有以下代码:

Task load = Task.Factory.StartNew(() => {//Some Stuff Which Throws an Exception});

try
{
    load.Wait();
}
catch (AggregateException ex)
{
    MessageBox.Show("Error!");
}
每当在任务中抛出异常时,我希望它冒泡并在try-catch中被捕获,而不是VisualStudio在异常发生时中断


我尝试了谷歌,一些人建议我在我的方法上添加这个
[DebuggerHidden]
,但它不起作用。

要关闭异常停止,请按“Ctrl+Alt+E”。这将打开异常窗口。取消勾选“公共语言运行时异常-抛出”

从VS的角度来看,从任何其他异常传递到任务的委托中引发的异常之间实际上没有任何区别

在一般情况下,没有办法解决这个问题

但是,您可以做的一件事是利用这样一个事实:当重新抛出异常时,它被包装在一个
AggregateException
中。当抛出
aggregateeexception
时,您可能会中断,但不会引发其他异常

您可以转到调试->异常,取消选择所有CLR异常,然后重新启用聚合异常:

它现在不会在
任务
正文中暂停,而是在调用
等待
时暂停调试器


不幸的副作用是,您现在不再暂停程序中其他任何地方的任何其他异常,即使它们不在传递给
任务的委托中。答案在注释部分是正确的

当启用“仅我的代码”时,Visual Studio在某些情况下会在引发异常的行上中断,并显示一条错误消息,上面显示“异常未由用户代码处理”。此错误是良性的。您可以按F5继续并查看这些示例中演示的异常处理行为要防止Visual Studio在出现第一个错误时出错,只需取消选中“工具”、“选项”、“调试”、“常规”下的“仅启用我的代码”复选框。


这可以防止它在代理中暂停,但在
Wait
上重新启动时不会。哦,天哪,这让我很困惑。我认为我的异常根本没有被捕获,但是自动中断还为时过早,可以从开始继续。这似乎是一种非常糟糕的违约行为。错误消息似乎是明显错误的,因为它声称异常是未捕获的,但如果继续,则会导致捕获到异常。