91网首页-91网页版-91网在线观看-91网站免费观看-91网站永久视频-91网站在线播放

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C# 實現定時任務的5種原生方法

admin
2025年6月2日 10:47 本文熱度 391

前言

程序猿小張最近遇到了一個難題——他需要每天早上9點自動給老板發送工作報告,就像個數字化的公雞打鳴一樣準時。在C#的世界里,這樣的定時任務該怎么實現呢?

定時器在編程中就像你的私人助理,可以幫你按時執行各種任務:數據備份、郵件發送、緩存清理...

今天,就讓我們一起來探索C#中那些讓你成為 "時間管理大師" 的定時器吧!

1. System.Timers.Timer

System.Timers.Timer 就像一個全能型選手,它是基于服務器的定時器,精度較高,適合需要在特定時間間隔重復執行的任務,特別要說明的是,它是線程安全的。

using System;
using System.Timers;

classProgram
{
    static void Main()
    {
        var timer = new System.Timers.Timer(1000); // 1秒間隔
        timer.Elapsed += (sender, e) => 
        {
            Console.WriteLine($"定時任務執行啦!時間:{e.SignalTime}");
        };
        timer.AutoReset = true// 設置為重復觸發
        timer.Start();
        
        Console.WriteLine("按任意鍵退出...");
        Console.ReadKey();
        timer.Stop();
    }
}

2. System.Threading.Timer

System.Threading.Timer 是一個輕量級的定時器,它性能更好,沒有UI組件依賴,適合后臺任務,不過在使用時,一定要記得手動釋放資源。

using System;
using System.Threading;

classProgram
{
    static void Main()
    {
        // 參數:回調方法, 狀態對象, 延遲時間, 間隔時間
        var timer = new Timer(state => 
        {
            Console.WriteLine($"線程定時器觸發!時間:{DateTime.Now}");
        }, null10002000); // 1秒后開始,每2秒觸發
        
        Console.WriteLine("按任意鍵退出...");
        Console.ReadKey();
        timer.Dispose(); // 記得釋放資源
    }
}

3. System.Windows.Forms.Timer

這是一個專為 Windows Forms 設計的定時器,事件在 UI 線程上觸發,可以直接操作 UI 控件,非常適合用于更新用戶界面元素,不過,它的精度較低(約55ms),不太適合高精度定時。

using System;
using System.Windows.Forms;

classProgram
{
    static void Main()
    {
        var form = new Form();
        var timer = new Timer { Interval = 1000 }; // 1秒間隔
        
        timer.Tick += (sender, e) =>
        {
            Console.WriteLine($"窗體定時器觸發!時間:{DateTime.Now}");
        };
        
        timer.Start();
        Application.Run(form);
    }
}

4. Stopwatch

Stopwatch 通常用來測量程序的執行時間,它的精度非常高,達到微秒級,所以換一個思路,也可以把它作為定時器,比如下面這個例子:

using System;
using System.Diagnostics;
using System.Threading;

classProgram
{
    static void Main()
    {
        var stopwatch = new Stopwatch();
        stopwatch.Start();
        
        while (true)
        {
            if (stopwatch.ElapsedMilliseconds >= 1000)
            {
                Console.WriteLine($"高精度計時!時間:{DateTime.Now}");
                stopwatch.Restart();
            }
            Thread.Sleep(10); // 降低CPU占用
        }
    }
}

5. Thread.Sleep 和 Task.Delay

有時候,我們只需要簡單的延遲執行某些代碼,這時候可以使用 Thread.Sleep(同步)或 Task.Delay(異步) 來實現,如:

using System;
using System.Threading.Tasks;

public class AsyncAwaitExample
{
    public static async Task Main(string[] args)
    {
        Console.WriteLine("開始計時...");
        await Task.Delay(5000); // 等待5秒
        Console.WriteLine("5秒后...");
    }
}

總結

現在你已經掌握了 C# 定時器的“十八般武藝”,是時候做個總結了!

  • 簡單任務:System.Threading.Timer/Task.Delay(Thread.Sleep)
  • 簡單任務且高精度:Stopwatch
  • UI相關:Windows.Forms.Timer
  • 服務器應用:System.Timers.Timer

現在,去用代碼馴服時間吧!


該文章在 2025/6/2 12:49:18 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 福利导航精品 | 成人亚洲网站 | 青青久热 | 中文字幕国产欧美 | 国产成a人亚洲精∨ | 国产在线www | 欧美日韩资源 | 无码成人 | 琪琪色好看在线观看 | 国产伦精品一区二 | 国产又大又硬又粗 | 日韩视频不卡在线 | 国产在线午夜 | 国产精品伦理在线 | 成人七区免费观看 | 午夜福利精品一区 | 日韩午夜电影网 | 韩国三级在线不 | 日本美女一级视频 | 99热都是精品 | 国语精品一区二 | 麻花豆传媒在线观看 | 国内精品自 | 欧美亚洲日本日韩 | 国产日韩欧美第二页 | 日本簧片| 午夜视频一区二区 | 国产中文字幕在 | 国产91色在线观看 | 无码成人午夜在线观看 | 97久视| 国产福利免费的网址 | 欧美在线| 91高清影视| 国产欧美另 | 欧美日韩一区二区 | 日本黄页精品大全 | 精品国产色欧洲激情 | 国产夏晴子免费福利 | 91办公室监控一区 | 91蝌蚪在线播放 |