此代码:
class Program
{
static void Main(string[] args)
{
Task.Run(() =>
{
throw new Exception();
}).Wait();
}
}
令我困惑。运行它,调试器就像我期望的那样在throw
上中断。按照我预期的Task.Run
点击AggregateException
上的f5和调试器面包。
再次点击f5,调试器再次在throw
,然后在Run
上重复,重复。
这是怎么回事?我期待两次休息,然后程序退出。要么我的调试器弄得一团糟/我还没有足够的咖啡,或者似乎Task.Run
正在重试代表......
答案 0 :(得分:3)
不使用任务时,您可以看到完全相同的行为:
class Program
{
static void Main(string[] args)
{
throw new Exception();
}
}
由于存在未处理的异常,调试器将无法继续(因为进程会崩溃)。