Réinitialiser Le Système.Les minuteries.À rebours pour éviter événement Écoulé

Je suis en train d'utiliser le Timer pour déclencher un événement pour envoyer des données à travers le réseau. J'ai créé une classe simple pour déboguer. Fondamentalement, j'ai un List<string> je voudrais envoyer. Je veux la suite:

  1. Ajouter une chaîne à List
  2. Commencer Timer pendant 10 secondes
  3. Ajouter la deuxième chaîne de List avant Timer.Elapsed
  4. Redémarrer Timer de 10 secondes.

Pour l'instant j'ai ceci:

public static List<string> list;
public static Timer timer;
public static bool isWiredUp = false;

public static void Log(string value) {
    if (list == null) list = new List<string>();
    list.Add(value);

    //this does not reset the timer, elapsed still happens 10s after #1
    if (timer != null) {
        timer = null;
    }

    timer = new Timer(10000);
    timer.Start();
    timer.Enabled = true;
    timer.AutoReset = false;

    if (!isWiredUp) {
        timer.Elapsed += new ElapsedEventHandler(SendToServer);
        isWiredUp = true;
    }
}

static void SendToServer(object sender, ElapsedEventArgs e) {
    timer.Enabled = false;
    timer.Stop();
}

Des idées?

OriginalL'auteur tedski | 2013-02-13