一箭工作室

大家一起来学软件开发

博客园 首页 新随笔 联系 订阅 管理
  当线程启动时,会自动执行委托的方法,将这个方法执行完成后,这个线程也会自动执行完成。若需要在线程执行中,终止线程,可以有三种方法:通过bool变量、Thread.Abort、终止应用程序,所有前台线程都必须要终止,后台线程会自动终止。

通过bool变量,相当于执行的开关,通过这个变量值,来控制线程,是否继续执行或终止?事例代码如下:

//通过参数化线程委托启动一个线程

ParameterizedThreadStart parameterizedThreadStart = new ParameterizedThreadStart(Worker.DoWork);

Thread thread = new Thread(parameterizedThreadStart);

thread.Start("Hello World!");

 

//终止一个线程,通过boolean变量来终止线程。

worker.RequestStop();

 

public class Worker

{

        private volatile bool shouldStop;

        // 当线程启动时,被调用。这个方法相当于主线程的Main入口

        public void DoWorkByVariable()

        {

            while (!shouldStop)

            {

                Console.WriteLine("worker thread: working...");

            }

            Console.WriteLine("worker thread: terminating gracefully.");

        }

 

        public void RequestStop()

        {

            shouldStop = true;

        }

}

 

       通过Abort方法来终止线程。其实这个方法是通过抛出一个异常来终止线程。因此,不是优先实现终止线程的方式。事例代码如下:

//通过参数化线程委托启动一个线程

ParameterizedThreadStart parameterizedThreadStart = new ParameterizedThreadStart(Worker.DoWork);

Thread thread = new Thread(parameterizedThreadStart);

thread.Start("Hello World!");

//终止一个线程,通过抛出ThreadAbortException异常来终止线程.

newThread.Abort();

 

线程一般分为前台线程和后台线程。终止应用程序,必须要终止所有前台线程,至于后台线程可以不必强制终止。因此,应用程序终止后,所有后台线程终止会自动终止。设置后台线程只需设置IsBackgroud属性为true即可。

posted on 2007-02-26 20:45  一箭  阅读(402)  评论(0)    收藏  举报