Home Backend Development C++ System.Timers.Timer vs. System.Threading.Timer in Windows Services: Which Timer Should I Choose?

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

Jan 20, 2025 pm 06:24 PM

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

The best timer choice in Windows services

In Windows services, it is a common requirement to perform specific tasks on a regular basis. There are two main timer classes available for this purpose: System.Timers.Timer and System.Threading.Timer. Which timer you choose is critical and requires careful weighing of the pros and cons.

Avoid unnecessary runtime dependencies

When using timers in Windows services, care must be taken to avoid using System.Web.UI.Timer or System.Windows.Forms.Timer. These timers are designed specifically for ASP.NET applications and Windows Forms. Integrating them into a service requires the inclusion of additional assemblies that may be incompatible with the service's runtime environment.

Comparison of the applicability of System.Timers.Timer and System.Threading.Timer

System.Timers.Timer and System.Threading.Timer are both possible solutions for using timers in Windows services. However, there are specific factors that should be considered when choosing.

System.Timers.Timer

To use System.Timers.Timer effectively, the timer must be declared at the class level to ensure that it remains scoped throughout its lifetime. This measure prevents the garbage collection from terminating its operation prematurely.

System.Threading.Timer

System.Threading.Timer has a more complex mechanism. It requires specifying a delegate that encapsulates the desired timer behavior. Additionally, a suitable synchronization mechanism (e.g. AutoResetEvent) may be required to coordinate interaction with the operating system.

Code Example

The following C# code example demonstrates deploying System.Timers.Timer and System.Threading.Timer in a Windows service:

System.Timers.Timer Example

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);
    }
}
Copy after login

System.Threading.Timer Example

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();
    }
}
Copy after login

Conclusion

System.Timers.Timer and System.Threading.Timer both provide viable solutions for implementing scheduled tasks in Windows services. The choice between the two depends on the specific requirements of the service and the degree of control over the timer behavior.

The above is the detailed content of System.Timers.Timer vs. System.Threading.Timer in Windows Services: Which Timer Should I Choose?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
1 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
1 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

What are the types of values ​​returned by c language functions? What determines the return value? What are the types of values ​​returned by c language functions? What determines the return value? Mar 03, 2025 pm 05:52 PM

What are the types of values ​​returned by c language functions? What determines the return value?

Gulc: C library built from scratch Gulc: C library built from scratch Mar 03, 2025 pm 05:46 PM

Gulc: C library built from scratch

What are the definitions and calling rules of c language functions and what are the What are the definitions and calling rules of c language functions and what are the Mar 03, 2025 pm 05:53 PM

What are the definitions and calling rules of c language functions and what are the

C language function format letter case conversion steps C language function format letter case conversion steps Mar 03, 2025 pm 05:53 PM

C language function format letter case conversion steps

Where is the return value of the c language function stored in memory? Where is the return value of the c language function stored in memory? Mar 03, 2025 pm 05:51 PM

Where is the return value of the c language function stored in memory?

distinct usage and phrase sharing distinct usage and phrase sharing Mar 03, 2025 pm 05:51 PM

distinct usage and phrase sharing

How do I use algorithms from the STL (sort, find, transform, etc.) efficiently? How do I use algorithms from the STL (sort, find, transform, etc.) efficiently? Mar 12, 2025 pm 04:52 PM

How do I use algorithms from the STL (sort, find, transform, etc.) efficiently?

How does the C   Standard Template Library (STL) work? How does the C Standard Template Library (STL) work? Mar 12, 2025 pm 04:50 PM

How does the C Standard Template Library (STL) work?

See all articles