了解Task.Run()中的异常

时间:2016-04-13 07:29:32

标签: c# task

此代码:

class Program
{
    static void Main(string[] args)
    {
        Task.Run(() =>
        {
            throw new Exception();
        }).Wait();
    }
}

令我困惑。运行它,调试器就像我期望的那样在throw上中断。按照我预期的Task.Run点击AggregateException上的f5和调试器面包。

再次点击f5,调试器再次在throw,然后在Run上重复,重复。

这是怎么回事?我期待两次休息,然后程序退出。要么我的调试器弄得一团糟/我还没有足够的咖啡,或者似乎Task.Run正在重试代表......

1 个答案:

答案 0 :(得分:3)

不使用任务时,您可以看到完全相同的行为:

class Program
{
    static void Main(string[] args)
    {
        throw new Exception();
    }
}

由于存在未处理的异常,调试器将无法继续(因为进程会崩溃)。