zoukankan      html  css  js  c++  java
  • 正确停止线程

    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();
            }
        }
    }
  • 相关阅读:
    switch语句
    switch语句
    if语句三种格式
    dowhile语句
    if语句三种格式
    if语句配对
    ansible
    linux系统中网站服务程序(web服务/httpd服务)
    ansible
    ansible
  • 原文地址:https://www.cnblogs.com/goodspeed/p/4068677.html
Copyright © 2011-2022 走看看