Rumah > pembangunan bahagian belakang > C++ > System.Timers.Timer vs. System.Threading.Timer dalam Perkhidmatan Windows: Pemasa Mana Yang Harus Saya Pilih?

System.Timers.Timer vs. System.Threading.Timer dalam Perkhidmatan Windows: Pemasa Mana Yang Harus Saya Pilih?

DDD
Lepaskan: 2025-01-20 18:24:14
asal
164 orang telah melayarinya

System.Timers.Timer vs. System.Threading.Timer in Windows Services: Which Timer Should I Choose?

Pilihan pemasa terbaik dalam perkhidmatan Windows

Dalam perkhidmatan Windows, adalah keperluan biasa untuk melaksanakan tugas tertentu secara tetap. Terdapat dua kelas pemasa utama yang tersedia untuk tujuan ini: System.Timers.Timer dan System.Threading.Timer. Pemasa yang anda pilih adalah kritikal dan memerlukan penimbangan yang teliti terhadap kebaikan dan keburukan.

Elakkan kebergantungan masa jalan yang tidak perlu

Apabila menggunakan pemasa dalam perkhidmatan Windows, penjagaan mesti diambil untuk mengelakkan penggunaan System.Web.UI.Timer atau System.Windows.Forms.Timer. Pemasa ini direka khusus untuk aplikasi ASP.NET dan Borang Windows. Mengintegrasikannya ke dalam perkhidmatan memerlukan kemasukan pemasangan tambahan yang mungkin tidak serasi dengan persekitaran masa jalan perkhidmatan.

Perbandingan kebolehgunaan Sistem.Pemasa.Pemasa dan Sistem.Pemasa.Pemasa

System.Timers.Timer dan System.Threading.Timer kedua-duanya penyelesaian yang mungkin untuk menggunakan pemasa dalam perkhidmatan Windows. Walau bagaimanapun, terdapat faktor khusus yang perlu dipertimbangkan semasa memilih.

Sistem.Pemasa.Pemasa

Untuk menggunakan System.Timers.Timer dengan berkesan, pemasa mesti diisytiharkan di peringkat kelas untuk memastikan ia kekal dalam skop sepanjang hayatnya. Langkah ini menghalang kutipan sampah daripada menamatkan operasinya lebih awal.

System.Threading.Timer

System.Threading.Timer mempunyai mekanisme yang lebih kompleks. Ia memerlukan penetapan perwakilan yang merangkum tingkah laku pemasa yang diingini. Selain itu, mekanisme penyegerakan yang sesuai (cth. AutoResetEvent) mungkin diperlukan untuk menyelaraskan interaksi dengan sistem pengendalian.

Contoh Kod

Contoh kod C# berikut menunjukkan penggunaan System.Timers.Timer dan System.Threading.Timer dalam perkhidmatan Windows:

Contoh Sistem.Pemasa.Pemasa

<code class="language-csharp">using System;
using System.Timers;

public class ServiceWithTimer
{
    private static System.Timers.Timer _timer;

    public static void Main()
    {
        _timer = new System.Timers.Timer(10000); // 类级别声明定时器
        _timer.Elapsed += OnTimedEvent;
        _timer.Interval = 2000;
        _timer.Enabled = true;

        Console.WriteLine("按任意键停止服务...");
        Console.ReadKey();
    }

    private static void OnTimedEvent(object sender, ElapsedEventArgs e)
    {
        Console.WriteLine("定时器事件在 {0} 触发", e.SignalTime);
    }
}</code>
Salin selepas log masuk

Contoh Sistem.Benang.Pemasa

<code class="language-csharp">using System;
using System.Threading;

public class ServiceWithTimer
{
    public static void Main()
    {
        AutoResetEvent autoResetEvent = new AutoResetEvent(false);
        TimerCallback timerCallback = CheckStatus;

        Console.WriteLine("创建定时器...");
        Timer stateTimer = new Timer(timerCallback, autoResetEvent, 1000, 250);

        Console.WriteLine("\n更改周期...");
        stateTimer.Change(0, 500);

        Thread.Sleep(5000);
        stateTimer.Dispose();
        Console.WriteLine("\n销毁定时器。");
    }

    private static void CheckStatus(object stateInfo)
    {
        AutoResetEvent autoResetEvent = (AutoResetEvent)stateInfo;
        Console.WriteLine("检查状态...");
        autoResetEvent.Set();
    }
}</code>
Salin selepas log masuk

Kesimpulan

System.Timers.Timer dan System.Threading.Timer kedua-duanya menyediakan penyelesaian yang berdaya maju untuk melaksanakan tugas berjadual dalam perkhidmatan Windows. Pilihan antara kedua-duanya bergantung pada keperluan khusus perkhidmatan dan tahap kawalan ke atas tingkah laku pemasa.

Atas ialah kandungan terperinci System.Timers.Timer vs. System.Threading.Timer dalam Perkhidmatan Windows: Pemasa Mana Yang Harus Saya Pilih?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan