首页 > 编程语言 > 详细

正确停止线程

时间:2014-11-02 10:47:18      阅读:158      评论:0      收藏:0      [点我收藏+]
using System;
using System.Threading;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var p = new Program();
            p.Do();
            p.Stop();
        }

        CancellationTokenSource cts = new CancellationTokenSource();

        void Do()
        {
            var worker = new Thread(() =>
            {
                while (true)
                {
                    if (cts.Token.IsCancellationRequested) //检查是否有取消请求
                    {
                        //处理收尾工作
                        Console.WriteLine("this worker was stoped");
                        break;
                    }

                    Console.WriteLine(DateTime.Now);
                    Thread.Sleep(1000);
                }
            });
            worker.Start();
        }

        void Stop()
        {
            Console.ReadKey();
            cts.Cancel(); //发出取消请求
            cts.Token.Register(() => { //进程被停止后通知
                Console.WriteLine("worker has been stoped!");
            });
            Console.ReadKey();
        }
    }
}

 

正确停止线程

原文:http://www.cnblogs.com/goodspeed/p/4068677.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!