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);
}
}
}
C#【时间相关篇】System.Threading.Timer如何停止
于 2020-12-04 11:23:35 首次发布