从另一个线程启动新线程并中止它C#

时间:2012-03-18 09:50:18

标签: c# multithreading ironpython thread-abort

如果我像这样做somtheing:

new Thread(DoWork).Start();

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

并且我中止运行DoWork的第一个线程是DoMoreWork也将中止? 如果不是,我怎么能中止第二个线程(DoMoreWork)?

谢谢!

更新

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

2 个答案:

答案 0 :(得分:0)

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

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

线程意味着并行运行并且不在层次结构中同步。

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

答案 1 :(得分:0)

  1. 中止“父”主题不会阻止“孩子”。

  2. 使用Thread.Abort是一个坏主意。你应该设计你的线程以优雅地退出:例如,查看this question的答案。

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