码迷,mamicode.com
首页 > 编程语言 > 详细

正确停止线程

时间:2014-11-02 10:47:26      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   ar   sp   div   on   art   

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();
        }
    }
}

 

正确停止线程

标签:style   blog   io   color   ar   sp   div   on   art   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!