我写了一个程序,在程序中开一个线程下十个文件,我想在程序下载完毕的时候弹出一提示说下载完毕,但是我怎么判断线程已经结束了呢?
Thread t1=new Thread(new ThreadStart(Download));
t1.Start();private void Download()
{
   //循环下载十个文件的代码
}我尝试用过t1.IsAlive()和t1.ThreadState==ThreadState.Stopped判断,但是都不行,有什么好的方法吗?

解决方案 »

  1.   

    Download() 方法执行完。线程自动结束。
    回到主方法再看t1.ThreadState 就是Stopped.
      

  2.   

    Thread.IsBackground 设为true 就可以了
      

  3.   

    可以给线程设置关闭超时时间 超时用thread.isalivel判断是否存活再强制杀掉
      

  4.   

    一个不优雅,但是最直接的方法:
    Download的最后直接弹出一个窗口,提示说下载完毕
      

  5.   

    发表于:2007-12-04 16:44:522楼 得分:0 
    Thread.IsBackground   设为true   就可以了 基本上不太明白这样做的目的是什么,我不希望这个线程直接因为主线程的完毕而完毕,而是希望它可以执行完.可能我对后台线程的理解还不对吧.
      

  6.   

    用event控制
    能说详细点吗?
      

  7.   

    注意是这个AutoResetEvent东西
    弄个全局int变量计数(或者其他能够控制线程完成的)当每个线程完成时减1但等于0时触发AutoResetEvent,主线程在外面等这个event.