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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ElecNoon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值