2011-07-04 2 views
1

J'ai actuellement le gestionnaire d'événement suivantC# minuterie pour un gestionnaire d'événements

WqlEventQuery query = new WqlEventQuery("__InstanceModificationEvent", 
new TimeSpan(0, 0, 1), "TargetInstance ISA \"Win32_NetworkAdapterConfiguration\""); 

     ManagementEventWatcher eventWatcher = new ManagementEventWatcher(query); 
     eventWatcher.EventArrived += new EventArrivedEventHandler(eventArrived); 
     eventWatcher.Start(); 

private void eventArrived(object sender, EventArrivedEventArgs e) 
{ 
    //Event Codes 
} 

je besoin d'aide pour le développement d'un (une fois) minuterie. Voici comment cela devrait fonctionner.

  1. En cas d'événement, le temporisateur commence à s'exécuter!
  2. Étant donné qu'il peut y avoir plusieurs occurrences de l'événement, si le temporisateur a démarré, ne redémarrez pas le temporisateur! (une fois)
  3. La durée du temporisateur doit être de 5 secondes
  4. Pendant la durée (5secondes), l'événement de temporisateur doit énumérer l'état de connexion des cartes réseau.

Le conseil de tout le monde/toute aide/suggestion/solution à l'égard de cette question serait grandement apprécié. Je suis confus avec le mécanisme d'une minuterie (une fois)!

+0

vous avez déjà pris des mesures comment faire, alors il suffit d'écrire le code. Avez-vous eu des problèmes avec le code ou les devoirs? – Reniuz

+0

Le problème est que je ne sais pas comment coder! Des lignes directrices? – Derek

Répondre

2

Peut-être que ce code pseudo aide:

myTimer.Interval = 5000;//5s 
private void eventArrived(object sender, EventArrivedEventArgs e) 
{ 
    if(!myTimer.Enabled) //if timer not running 
     myTimer.Start(); 
} 

private void myTimer_Tick(object sender, System.EventArgs e) 
{ 
    //enumerate statuses every 5s 
}