2010-05-19 3 views
1

Quel sera l'espace de noms de TimerEvent?Espace de nom pour timerEvent

+2

Que voulez-vous dire par TimerEvent? Est-ce votre propre type de classe? Parce qu'il n'y a pas une telle classe dans le cadre. – pyrocumulus

+0

Ceci est ma classe class ClockTimer { événement public TimerEvent Timer; public void Start() { pour (int i = 0; i <5; i ++) { Timer = null; Thread.Sleep (1000); } } ClockTimer clockTimer = new ClockTimer(); ClockTimer.Timer + = new TimerEvent (OnClockTick); clockTimer.Start(); – user344068

+0

Selon http://msdn.microsoft.com/en-us/library/system.timers.aspx il y a seulement une chose appelée '\t ElapsedEventHandler' qui est utilisé avec les timers. Tous les noms de classe que vous utilisez dans cet extrait de code ne font pas partie du framework .NET. – pyrocumulus

Répondre

0

Si vous recherchez la classe .NET Timer et les événements générés par celle-ci, vous pouvez utiliser l'espace de noms System.Timers.

Il existe également une classe Timer dans System.Windows.Forms mais celle-ci est monothread et moins précise que ce qui précède.

EDIT: Comme mentionné par @GenericTypeTea, il ne s'agit pas d'une partie existante du framework .NET, vous devrez donc soit créer un nouveau délégué, soit utiliser un événement existant à la place tel que Timer.Tick.

+0

Je l'ai déjà utilisé, mais il demande aussi l'espace de noms pour timerEvent – user344068

+1

Mais je veux l'utiliser en mode développement Web. – user344068

2

Vous semblez avoir copié du code à partir de ce ebook (voir page 183 à partir de). Fondamentalement, TimerEvent est un délégué que l'auteur a créé pour leur classe ClockTimer.

TimerEvent ne fait pas partie de la structure .Net. Vous pouvez créer votre propre délégué TimerEvent comme suit:

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

+1 pour l'ingéniosité de trouver cet ebook. – pyrocumulus

0
System.Threading.Timer 

Fournit un mécanisme pour l'exécution d'une méthode à intervalles réguliers

MSDN Article

De l'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(); 
     } 
    } 
} 
Questions connexes