先说明情景:目标线程无论怎么生成,其代码是不能修改的。也就是说只修改调用方代码实现。如果用异步委托:支持线程结束时回调(BeginInvoke方法的的第一个参数),但不支持在外部中断线程
如果用手动线程:支持在外部中断线程(Thread.Abort方法),但不支持线程结束回调或事件
现在想同时实现这两个特性,要怎么处理呢?
如果用手动线程:支持在外部中断线程(Thread.Abort方法),但不支持线程结束回调或事件
现在想同时实现这两个特性,要怎么处理呢?
可以看到手工线程是可以在线程外部强行中止的。但是不能实现 线程结束后回调 或 线程自然结束的事件 static void Main(string[] args)
{
Thread t = new Thread(a);
t.Start();
Thread.Sleep(100);
t.Abort();
Console.Read();
} static void a()
{
int i = 0;
try
{
while (true)
{
i++;
}
}
catch (Exception ex)
{
Console.WriteLine(i+" loops before break. ");
Console.WriteLine(ex.ToString());
}
}