timerEvent的命名空间

时间:2010-05-19 12:35:07

标签: c#

TimerEvent的命名空间是什么?

3 个答案:

答案 0 :(得分:2)

您似乎已经从此ebook复制了一些代码(请参阅第183页)。基本上,TimerEvent是作者为其ClockTimer类创建的委托。

TimerEvent不是.Net框架的一部分。您可以按如下方式创建自己的TimerEvent委托:

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

答案 1 :(得分:0)

如果您正在寻找.NET Timer类及其生成的事件,您可以使用System.Timers命名空间。

System.Windows.Forms中还有一个Timer类,但这是单线程的,并且不如上面那么准确。

编辑:正如@GenericTypeTea所提到的,它不是.NET框架的现有部分,因此您需要创建新的委托或使用现有的事件,例如Timer.Tick。

答案 2 :(得分:0)

System.Threading.Timer
  

提供以指定间隔执行方法的机制

MSDN文章

来自文章

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