TimerEvent的命名空间是什么?
答案 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();
}
}
}