0

如果我这样做:

new Thread(DoWork).Start();

void DoWork(){new Thread(DoMoreWork).Start();}

我中止运行 DoWork 的第一个线程是 DoMoreWork 也会中止吗?如果不是,我如何中止 sec 线程(DoMoreWork)?

谢谢!

更新:

我运行脚本的问题,Microsoft.Scripting为此我启动了一个调用Execute()方法的新线程,Microsot.Scripting我希望能够中止脚本。我可以中止我的线程,但我不知道哪个线程 Execute 创建来运行脚本。

4

2 回答 2

0

这是一个糟糕的设计......

你不应该这样做,因为如果第二个线程挂起,第一个线程也不会关闭,你的 GC 不会清理资源 AKA 死锁

线程旨在并行运行,而不是在层次结构中同步。

在那里你可以找到一个很好的 .net 线程指南: http ://www.albahari.com/threading/

于 2012-03-18T10:02:26.947 回答
0
  1. 中止“父”线程不会停止“子”。

  2. 使用 Thread.Abort 是个坏主意。您应该将线程设计为优雅退出:例如,请参阅此问题的答案。

如果您将线程设计为优雅地退出(例如,当您发出事件信号时),这也将允许您终止两个线程。

于 2012-03-18T10:11:22.700 回答