【发布时间】:2013-10-06 04:20:00
【问题描述】:
我有一个对象 A,我想用对象的 B 方法从中执行新线程。我可以使用 Task.CreateNew 等。问题是我不知道如何处理新线程中的异常。
通常我想要的是带有对象 B 方法的内部线程抛出异常,父对象 A 将捕获并关闭它的执行,以及对象 B。
我根本无法向主循环添加代码
在主循环完成后捕获异常是不可接受的,我想要 及时捕获内部线程异常
有什么方法可以实现吗?
在下面的代码中我没有异常处理并且主线程继续:
static void Main()
{
Console.WriteLine("start");
Task.Factory.StartNew(PrintTime, CancellationToken.None);
for (int i = 0; i < 20; i++)
{
Console.WriteLine("master thread i={0}", i + 1);
Thread.Sleep(1000);
}
}
private static void PrintTime()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine("inner thread i={0}",i+1);
Thread.Sleep(1000);
}
throw new Exception("exception");
}
【问题讨论】:
标签: c# .net multithreading