日期:2014-05-18 浏览次数:20933 次
using System; using System.Threading; public class Worker { // 在线程启动时此方法将被调用 public void DoWork() { while (!_shouldStop) // 如果线程正在运行则打印信息 { Console.WriteLine("worker thread: working..."); } Console.WriteLine("worker thread: terminating gracefully."); } public void RequestStop() { _shouldStop = true; } // Volatile这个关键字用来提醒编译器这个数据成员将被多线程访问 private volatile bool _shouldStop; // 应该停止 } public class Program { static void Main() { // 创建一个线程对象. 这里并不是线程的开始 Worker workerObject = new Worker(); // 这里定义一个新的线程,注意这里没有使用ThreadStart委托 // 另外构造函数接受的是对象的方法的名称 Thread workerThread = new Thread(workerObject.DoWork); // 这里才是线程的真正开始 workerThread.Start(); Console.WriteLine("主线程: worker线程开始..."); // 循环直到线程被激活,Thread的IsAlive这个属性表示线程是否为活动的 while (!workerThread.IsAlive); // 将主线程暂停1毫秒,以允许worker这个线程完成自己的工作 Thread.Sleep(1); // 需要worker这个线程自动停止 workerObject.RequestStop(); // 使用Join这个方法来阻塞当前线程,直到对象的线程终止 workerThread.Join(); Console.WriteLine("main thread: Worker thread has terminated."); } }