2010-05-19 25 views
1

TimerEvent的命名空間是什麼?timerEvent的命名空間

+2

TimerEvent是什麼意思?這是你自己的班級嗎?因爲.NET框架afaik中沒有這樣的類。 – pyrocumulus 2010-05-19 12:37:21

+0

這是我的課 class ClockTimer { 公用事件TimerEvent Timer; public void Start() for {(int i = 0; i <5; i ++) { Timer = null; Thread.Sleep(1000); } } ClockTimer clockTimer = new ClockTimer(); clockTimer.Timer + = new TimerEvent(OnClockTick); clockTimer.Start(); – user344068 2010-05-19 12:40:20

+0

根據http://msdn.microsoft.com/en-us/library/system.timers.aspx,只有一個名爲'\t ElapsedEventHandler'的東西與定時器一起使用。您在該代碼段中使用的所有類名不是.NET框架的一部分。 – pyrocumulus 2010-05-19 12:45:23

回答

0

如果您正在查找.NET Timer類及其生成的事件,則可以使用System.Timers命名空間。

System.Windows.Forms中還有一個Timer類,但是這是單線程的,並且比上面的準確度要低。

編輯:正如@GenericTypeTea所述,它不是.NET框架的現有部分,因此您需要創建一個新的委託或使用現有的事件,例如Timer.Tick。

+0

我已經使用它,但它然後也要求命名空間timerEvent – user344068 2010-05-19 12:42:14

+1

但我想在Web開發模式中使用它。 – user344068 2010-05-19 12:43:26

2

您好像從ebook(請參閱第183頁起)複製了一些代碼。基本上,TimerEvent是作者爲其ClockTimer類創建的委託。

TimerEvent不是.Net框架的一部分。你可以創建自己的TimerEvent委託如下:

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

+1爲尋找該電子書足智多謀。 – pyrocumulus 2010-05-21 19:04:37

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