wangsaokui(无间道III(终极无间))的帖子,呵呵,帮楼主顶一下:)

解决方案 »

  1.   

    谢谢楼上的
    To:楼主
    在你刚才的帖子中我已经回答了,需要在OnStop中Thread.Abort();
      

  2.   

    在OnStart中
    private Thread abc = new Thread(new ThreadStart(Delete_File));
    abc.Start();
    在OnStop中
    abc.Abort();
      

  3.   

    我的代码大概如下:
    在主程序中开启一个背景线程
                     Thread backThread;
                     private void backThreadStart()
                     {
    this.backThread=new Thread(new ThreadStart(aa));
    this.backThread.Start(); } private void aa()
    {
    while(true)
    {
                                   dosomething...
    }
    }
    现在的问题是除非在退出主程序前用backThread.Abort()终止线程,否则backThread不会停止
    为什么backThread的资源没有被释放?是否可以用这个来做一些需要一直运行的后台程序?
      

  4.   

    随便一个.net开发的程序,至少3个线程,你可以在任务管理器查看---选择列---选中线程,因为还有框架等,但我们一般把系统的线程忽略了,也就把它当单线程处理
    主应用停止,但线程并不依赖于主应用的线程,所以仍然运行,backThread的资源没有被释放是否可以用这个来做一些需要一直运行的后台程序?
    可以,好的做法是设定一个boolean值,在while(这个boolean值)判断,不需要的时候直接置这个boolean为false,这样就停掉了线程(实际没有停,是阻塞了,当你需要线程运行的时候再设置为true)。
    如果确认停止,比如在windows service的OnStop中,还是需要Abort的