zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C#【时间相关篇】System.Threading.Timer如何停止

c# 如何 时间 相关 system 停止 timer Threading
2023-09-11 14:15:48 时间
using System;
using System.Threading;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            ThreadPool.SetMaxThreads(5000, 1000);

            TimerCallback callback = new TimerCallback(ThreadPoolMessage);
            Console.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff"));
            Timer t = new Timer(callback, "Hello Jack! ", 0, 1000);
            Thread.Sleep(5000);
            //停止timer回调
            //t.Dispose();//方法一,直接关闭销毁释放
            t.Change(-1, 0);//方法二,暂停,和方法一有区别,可恢复
            /*暂停: Change(-1,任意值);
              启动: Change(多长时间后启动,时间间隔周期);*/
            Thread.Sleep(5000);//暂停5s

            t.Change(0, 1000);//重新启动回调
            //t.Change(2000, 1000);//重新启动回调

            Console.ReadKey();
            //Console.ReadLine();
        }

        //显示线程池现状
        static void ThreadPoolMessage(object data)
        {
            int a, b;
            ThreadPool.GetAvailableThreads(out a, out b);
            string message = string.Format("{0}\n   CurrentThreadId is:{1}\n" +
                "   CurrentThread IsBackground:{2}\n" +
                "   WorkerThreads is:{3}\n   CompletionPortThreads is:{4}\n",
                 data + "Time now is " + DateTime.Now.ToString("HH:mm:ss.fff"),
                 Thread.CurrentThread.ManagedThreadId,
                 Thread.CurrentThread.IsBackground.ToString(),
                 a.ToString(), b.ToString());
            Console.WriteLine(message);          
        }
    }
}