常見需求:定時執行計劃任務、長任務進度顯示(需新線程避免阻塞 UI)。.NET 提供 System.Threading.Timer 實現定時任務。
ThreadPool.SetMinThreads(2, 2);
ThreadPool.SetMaxThreads(4, 4);
Timer timer = new Timer((state) =>
{
int a, b;
ThreadPool.GetAvailableThreads(out a, out b);
Console.WriteLine(string.Format("({0}/{1}) #{2} : {3}", a, b, Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString("mm:ss"));
}, null, 2000, 1000);
Console.WriteLine(DateTime.Now.ToString("mm:ss"));
Thread.Sleep(5000);
Console.WriteLine("Change()");
timer.Change(3000, 500); // 延遲 3 秒後啟動,之後每 0.5 秒觸發
Thread.Sleep(5000);
Console.WriteLine("Dispose()");
timer.Dispose();
Thread.Sleep(5000);
Console.WriteLine(DateTime.Now.ToString("mm:ss"));

輸出可見:Timer 回調在 ThreadPool 線程執行,Change() 可動態修改首次延遲與週期,Dispose() 停止 Timer。