工作着 寻思着

  博客园 :: 首页 :: 联系 :: 订阅 订阅 :: 管理
  10 Posts :: 0 Stories :: 26 Comments :: 0 Trackbacks

公告

最近在写程序的时候,发现.net关闭程序的时候,不会触发线程的中止。大家可以试一下。
建立一个winform项目,然后在上面添加一个按钮,按钮触发一个能维持20s的线程。

private void button1_Click(object sender, System.EventArgs e)
        
{
            Thread thread 
= new Thread(new ThreadStart(run));
            thread.Start();
        }

        
private void run()
        
{
            System.Threading.Thread.Sleep(
20000);
            MessageBox.Show(
"run in thread");    
        }

触发后你关掉winform,发现任务管理器中,该进程还是存在的,然后过了20s,"run in thread"弹出框出现,你单击确定后,进程关闭。说明winform关闭的时候不会自动中止线程。
解决方法:
1:你可以建立一个线程管理类。程序退出时,将各个线程中止,退出。资源,系统会自动释放。
2:建一个   public   static   bool   EndAll   =   false;
然后你主线程退出时将它置   true
然后在你的每子线程循环内加上
if   (类.EndAll){
    break;
}
这样的话,线程提前结束。程序自然退出。

posted on 2006-04-05 16:21 阅读(367) 评论(1) 编辑 收藏