RunUO-FR

Forum de support pour RunUO en français.
 
AccueilAccueil  FAQFAQ  RechercherRechercher  MembresMembres  GroupesGroupes  S'enregistrerS'enregistrer  Connexion  

Partagez
 

 Créer un Timer

Aller en bas 
AuteurMessage
Gargouille



Messages : 97
Date d'inscription : 02/09/2008

Créer un Timer Empty
MessageSujet: Créer un Timer   Créer un Timer Icon_minipostedSam 6 Sep - 17:30

La classe Timer est définie le fichier source Timer.cs

Elle définit 3 constructeurs :
Code:
public Timer( TimeSpan delay ) : this( delay, TimeSpan.Zero, 1 )
public Timer( TimeSpan delay, TimeSpan interval ) : this( delay, interval, 0 )
public Timer( TimeSpan delay, TimeSpan interval, int count )

delay est le temps avant le premier évenement
interval le temps entre les évenements suivants
count est le nombre de "tick", c'est à dire le nombre de fois que doit "battre" un timer répétitif.

Par conséquent on peut faire un Timer qui :
- déclenchera un unique événement
- déclenchera un évenement périodique indéfiniment
- déclenchera un évenement périodique un nombre de fois spécifié.

Vous pouvez créer votre Timer dans un fichier séparé, mais la plupard du temps, le Timer sera intégré au sein de la classe qui l'appelle.

Ce sera a lors une classe imbriquée, d'accès privé.

Donc au sein de votre classe, vous allez définir :
Code:
// Créer un nouvel objet, ici MonTimer, qui hérite de l'objet Timer

private class MonTimer : Timer
{

  // Spécifier que l'objet MonTimer créera l'évènement après trois secondes         
  public MonTimer( ) : base( TimeSpan.FromSeconds (3.0) )
  {
               
  }

  // Créer la méthode qui s'exécutera à la fin du délais prescrit, au Tick
  protected override void OnTick()
  {
  }
}

Et dans votre classe, vous définirez une variable de type MonTimer que vous initialiserez avec une nouvelle instance de MonTimer :
Code:
MonTimer timer = new MonTimer();

Ensuite il vous suffira de le lancer par timer.Start();

Vous n'aurez plus qu'à mettre un code dans la méthode OnTick().
Cependant, au sein de la méthode OnTick() vous ne pourrez pas avoir accès aux variable extérieures à MonTimer. Il vous faut donc les passer en argument au constructeur, qui les assignera à des variables privée à MonTimer et donc utilisables dans OnTick().

Par exemple :

Code:
// Créer l'objet MonTimer héritant de l'objet Timer

private class MonTimer : Timer
{
  private Mobile m_from;

  // Spécifier qu'au bout de trois secondes le mobile (from) deviendra m_from.          
  public MonTimer( Mobile from) : base( TimeSpan.FromSeconds (3.0))
  {
    m_from = from;         
  }

  // Spécifier qu'au Tick, le mobile mourra
  protected override void OnTick()
  {
    m_from.Kill();
  }
}
Voir le tuto sur le passage d'arguments
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Gargouille



Messages : 97
Date d'inscription : 02/09/2008

Créer un Timer Empty
MessageSujet: Re: Créer un Timer   Créer un Timer Icon_minipostedSam 13 Sep - 15:32

Donc nous avons vu comment créer notre propre Timer.

Nous pouvons aussi utiliser les méthodes DelayCall définies dans Timer.cs, à savoir :


  • public static Timer DelayCall( TimeSpan delay, TimerCallback callback )
  • public static Timer DelayCall( TimeSpan delay, TimeSpan interval, TimerCallback callback )
  • public static Timer DelayCall( TimeSpan delay, TimeSpan interval, int count, TimerCallback callback )
  • public static Timer DelayCall( TimeSpan delay, TimerStateCallback callback, object state )
  • public static Timer DelayCall( TimeSpan delay, TimeSpan interval, TimerStateCallback callback, object state )
  • public static Timer DelayCall( TimeSpan delay, TimeSpan interval, int count, TimerStateCallback callback, object state )



  • TimeSpan delay pour le délai...
  • TimeSpan interval pour l'interval entre chaque tick (donc il y aura des tick)
  • int count, si on veut spécifier le nombre de ticks
  • TimerCallback callback instancié avec un new, donne le nom de la méthode à appeler
  • object state... je n'ai pas d'exemple de passage d' objet en paramètre




Donc, il suffit de déclarer :
Code:
Timer.DelayCall(TimeSpan.FromMinutes(60.0), new TimerCallback(MaMethode));

puis la méthode appelée :
Code:
private void MaMethode()
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
 
Créer un Timer
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RunUO-FR :: Tutoriaux Scripts :: Tutoriaux RunUO-
Sauter vers: