开发者

Namespace for timerEvent

开发者 https://www.devze.com 2022-12-30 16:34 出处:网络
What will be the namespace for TimerEvent ?开发者_如何学编程You seem to have copied some code out of this ebook (see page 183 on onwards). Basically, TimerEvent is a delegate that the author has creat

What will be the namespace for TimerEvent ?开发者_如何学编程


You seem to have copied some code out of this ebook (see page 183 on onwards). Basically, TimerEvent is a delegate that the author has created for their ClockTimer class.

TimerEvent is not part of the .Net framework. You can create your own TimerEvent delegate as follows:

public event TimerEvent Timer;
public delegate void TimerEvent(object sender, EventArgs e);


System.Threading.Timer

Provides a mechanism for executing a method at specified intervals

MSDN Article

From Article

using System;
using System.Threading;

class TimerExample
{
    static void Main()
    {
        AutoResetEvent autoEvent     = new AutoResetEvent(false);
        StatusChecker  statusChecker = new StatusChecker(10);

        // Create an inferred delegate that invokes methods for the timer.
        TimerCallback tcb = statusChecker.CheckStatus;

        // Create a timer that signals the delegate to invoke 
        // CheckStatus after one second, and every 1/4 second 
        // thereafter.
        Console.WriteLine("{0} Creating timer.\n", 
            DateTime.Now.ToString("h:mm:ss.fff"));
        Timer stateTimer = new Timer(tcb, autoEvent, 1000, 250);

        // When autoEvent signals, change the period to every
        // 1/2 second.
        autoEvent.WaitOne(5000, false);
        stateTimer.Change(0, 500);
        Console.WriteLine("\nChanging period.\n");

        // When autoEvent signals the second time, dispose of 
        // the timer.
        autoEvent.WaitOne(5000, false);
        stateTimer.Dispose();
        Console.WriteLine("\nDestroying timer.");
    }
}

class StatusChecker
{
    private int invokeCount;
    private int  maxCount;

    public StatusChecker(int count)
    {
        invokeCount  = 0;
        maxCount = count;
    }

    // This method is called by the timer delegate.
    public void CheckStatus(Object stateInfo)
    {
        AutoResetEvent autoEvent = (AutoResetEvent)stateInfo;
        Console.WriteLine("{0} Checking status {1,2}.", 
            DateTime.Now.ToString("h:mm:ss.fff"), 
            (++invokeCount).ToString());

        if(invokeCount == maxCount)
        {
            // Reset the counter and signal Main.
            invokeCount  = 0;
            autoEvent.Set();
        }
    }
}


If you're looking for the .NET Timer class and the events generated by it, you can use the System.Timers namespace.

There is also a Timer class in System.Windows.Forms but this is single-threaded and less accurate than the above.

EDIT: As mentioned by @GenericTypeTea, it's not an existing part of the .NET framework so you'll need to either create a new delegate or use an existing event instead such as Timer.Tick.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号