如果我像这样做somtheing:
new Thread(DoWork).Start();
void DoWork(){new Thread(DoMoreWork).Start();}
并且我中止运行DoWork的第一个线程是DoMoreWork也将中止? 如果不是,我怎么能中止第二个线程(DoMoreWork)?
谢谢!
更新
我使用Microsoft.Scripting
运行脚本的问题,为此,我启动了一个从Execute()
调用Microsot.Scripting
方法的新线程,我希望能够中止脚本。我可以中止我的帖子,但我不知道Execute创建哪个线程来运行脚本。
答案 0 :(得分:0)
这是一个糟糕的设计......
你不应该这样做,因为如果第二个线程挂起,第一个线程也不会关闭,你的GC将不会清理资源AKA死锁
线程意味着并行运行并且不在层次结构中同步。
在那里你可以找到一个很好的.net线程指南: http://www.albahari.com/threading/
答案 1 :(得分:0)
中止“父”主题不会阻止“孩子”。
使用Thread.Abort是一个坏主意。你应该设计你的线程以优雅地退出:例如,查看this question的答案。
如果您将线程设计为优雅地退出(例如,当您发出事件信号时),这也将允许您杀死两个线程。