阻止Visual Studio调试打破明显的“未处理的异常”

时间:2011-10-07 09:06:54

标签: c# multithreading exception-handling visual-studio-2012 visual-studio-debugging

请考虑这个简短的控制台应用代码。

static void Main(string[] args)
{
    try
    {
        Action a = () =>
        {
            throw new ApplicationException("Oops");
        };

        var ar = a.BeginInvoke(null, null);
        ar.AsyncWaitHandle.WaitOne();
        try
        {
            a.EndInvoke(ar);
            Console.WriteLine("No message");
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
    }
    finally
    {
        Console.ReadKey();
    }
}

运行时,Visual Studio会在throw上断言抱怨其未处理。在调试器外部执行时,代码执行我期望的操作(显示“Oops”)。

如何说服Visual Studio允许代码像在现实世界中那样执行?

1 个答案:

答案 0 :(得分:2)

您可以将DebuggerNonUserCode attribute应用于方法以将其从调试器中隐藏。