【发布时间】:2013-06-21 15:43:55
【问题描述】:
我写了这段代码sn-p:
static void Main(string[] args)
{
Console.WriteLine("Start");
Thread secondThread = new Thread(ThrowAnException);
secondThread.Start();
Console.ReadKey();
}
static void ThrowAnException()
{
throw new Exception("Second Thread Exception");
}
}
我的理解是,当异常发生在第二个线程上时,异常会沿着线程的堆栈向下移动,如果未处理,子线程会静默终止。我看到的是线程正在中断主线程并以“异常未处理”中断 ThrowAnException 方法。
我在调试和不调试的情况下都运行了它,行为是一样的。
任何想法我做错了什么?
【问题讨论】:
-
你如何“看到线程正在中断主线程”?
-
the child thread terminates silently- 你是从哪里看到这个的? -
...在调试和不运行的情况下运行它,并且行为是相同的...通过调试,您可以在 Visual Studio 中看到它。你在没有调试的情况下看到了什么?只需双击 exe 就会使 exe 崩溃并出现程序崩溃对话框。 你是如何在没有调试的情况下得到断点的?
-
反向 - 1) 没有调试,应用程序崩溃并显示消息 - 没有断点。 2) 子线程终止 - 这不是 .NET 运行时的行为吗?你是说子线程可以终止父线程? 3)我看到 VS2012 中断(调试)或应用程序崩溃(非调试)。 4) 不是重复。
标签: .net multithreading exception-handling