2011-05-19 102 views
20

父窗体上的按钮用于启动线程。 如果父窗体在开发环境中关闭,则线程会在后台运行,以防止对64位Windows 7平台上的源代码进行编辑。 线程必须通过菜单>调试>停止调试来终止。 当父窗体关闭时,以编程方式终止线程的正确方法是什么?如何在退出时杀死线程?

private void buttonW_Click(object sender, EventArgs e) 
{ 
    Thread t = new Thread(Main.MyThread); 
    t.Start(); 
} 

private static void MyThread() 
{ 
    ... 
} 

回答

45

如果您希望应用程序在主线程完成退出,你可以让新线程在后台线程:

Thread t = new Thread(Main.MyThread); 
t.IsBackground = true; 
t.Start(); 

基本上进程将退出,当所有的前景线程已经退出。

注意,这可能是个坏消息,如果后台线程写入数据时窗体关闭的文件,或者类似的东西...

+2

我简直不敢相信我一直保存线程的堆栈主线程并遍历它来关闭它们。 – BrunoLM 2011-05-19 17:34:49

+0

完美。谢谢。顺便说一句:刚开始你的书。 – jacknad 2011-05-19 17:37:09

+0

@JackN:很高兴帮助。希望你喜欢这本书:) – 2011-05-19 17:39:30