我有这段代码:
Thread t = new Thread(() => UpdateImage(origin));
t.Name = "UpdateImageThread";
t.Start();
如果方法UpdateImage(origin)抛出异常,是需要停止线程还是在异常后它会被停止?谢谢!
我有这段代码:
Thread t = new Thread(() => UpdateImage(origin));
t.Name = "UpdateImageThread";
t.Start();
如果UpdateImage
抛出异常,很可能会导致整个进程崩溃。任何引发顶级异常的线程都表示存在重大问题。你应该对其进行封装,例如通过在UpdateImage
周围放置try
/catch
并执行适当的操作。是的,如果异常到达线程顶部,该线程将死亡:
Thread t = new Thread(() => {
try {UpdateImage(origin); }
catch (Exception ex) {Trace.WriteLine(ex);}
});
t.Name = "UpdateImageThread";
t.Start();
如果在UpdateImage方法中捕获了异常,除非catch子句明确地从该方法返回,否则该异常不会导致线程停止。
如果未处理,则您的应用程序无论如何都会崩溃-从而导致线程停止;)
最好在UpdateImage方法中放置try...catch块,并在那里执行逻辑错误处理。然后,您可以自行决定是返回并结束线程还是重试。
如果您没有处理异常,线程将自动终止,以及您的进程的其余部分,假设您使用的是 .Net 2.0 或更高版本(我假设您使用的是 C# 3 语法)。
它就像主线程一样,例如如果在主线程中发生异常并且没有人捕获它,那么主线程将终止您的应用程序。
用户线程也是如此。