我在捕獲在同一任務之外的Parallel.Invoke
任務中拋出的異常時遇到了問題。Visual Studio 2010中的Parallel.Invoke中的不可捕捉的異常
在某些PC上,這樣的例外總會導致程序進入調試器,即使所有內容都在try catch
塊中。
在其他PC上,這樣的異常將被包裝在AggregateException中,該異常可以在主線程中捕獲。
下面的程序運行在一臺PC上的精細,印刷"I don't care"
& "whatever"
static void Main(string[] args)
{
try
{
throw new Exception("1");
}
catch (Exception ex)
{
Console.WriteLine("I don't care");
}
try
{
System.Threading.Tasks.Parallel.Invoke(
new Action[]{
()=>{throw new Exception("2");},
});
}
catch (Exception ex)
{
Console.WriteLine("whatever");
}
}
但另一臺PC上時,Visual Studio始終停止在第二個例外的程序(第一異常會導致沒有問題)
我的期望是,Parallel.Invoke吞下Exception("2")
並生成一個新的主線程上的,可以被捕獲。
這似乎適用於一臺PC,但不適用於另一臺PC。
當我沒有調試器運行程序時,一切運行良好。
是否有特定的Visual Studio設置可能導致此?
我檢查是否有點擊Debugging/Exceptions/reset everything
任何奇怪的設置,但沒有改進:
可誰都重現此問題?
例外設置,打破所有拋出的異常也許吧? – leppie
我試着在調試/例外情況下重置所有東西(我已經更新了我的問題以添加此內容)。我看不出有什麼區別。我拋出的兩個異常都是相同的基本類型:'new Exception()',但是'Parallel.Invoke'中只有一個不能被捕獲。 – HugoRune