7
votes

C # Timer.ELAPSED?

J'ai inclus le package system. / code>, mais lorsque je tape: xxx

Je me souviens qu'il était là dans vb.net. Pourquoi cela ne fonctionne-t-il pas?


2 commentaires

Qu'essayez-vous de faire? Obtenez le temps écoulé depuis le démarrage de la minuterie?


msdn.microsoft.com/en-us/Library/ ...


4 Réponses :


35
votes

Ce n'est pas une propriété. C'est un événement .

Donc vous Il faut fournir un gestionnaire d'événements qui exécutera chaque fois que les tiques de la minuterie. Quelque chose comme ceci: xxx


5 commentaires

Poudouis votre réponse car il est plus court, donc plus clair et au point.


Je vois que c'est system.timers.elapsdeventargs e mais aussi, comment ajoutez-vous la minuterie au formulaire? J'ai essayé this.controls.add (minuterie) mais a eu une erreur. comme il a besoin de System.Windows.Form.Control


Pourriez-vous expliquer, quand utiliser + = nouveau elapsnediventhandler (myhandler) et quand il suffit + = myhandler ?


@Vassilisgr, pour associer le gestionnaire d'événements à quelque chose que vous utilisez + = ; Vous pouvez également supprimer le gestionnaire d'événements à l'aide de la syntaxe - = .


Alors, que fait exactement la ligne 4? Il appelle une fonction sur le côté droit de + = chaque seconde?



6
votes

exemple Microsofts. http://msdn.microsoft.com/en-us /library/system.lapsed.aspx

écoulé est un événement et nécessite donc un événementHandler. P>

using System;
using System.Timers;

public class Timer1
{
private static System.Timers.Timer aTimer;

public static void Main()
{       
    // Create a timer with a ten second interval.
    aTimer = new System.Timers.Timer(10000);

    // Hook up the Elapsed event for the timer.
    aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);

    // Set the Interval to 2 seconds (2000 milliseconds).
    aTimer.Interval = 2000;
    aTimer.Enabled = true;

    Console.WriteLine("Press the Enter key to exit the program.");
    Console.ReadLine();       
}

// Specify what you want to happen when the Elapsed event is  
// raised. 
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
    Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime);
}
}

/* This code example produces output similar to the following:

Press the Enter key to exit the program.
The Elapsed event was raised at 5/20/2007 8:42:27 PM
The Elapsed event was raised at 5/20/2007 8:42:29 PM
The Elapsed event was raised at 5/20/2007 8:42:31 PM
...
 */


1 commentaires

J'ai vu cela dans la base de données Microsoft, mais je pense qu'il a la même fonctionnalité que le vide privé Timer1_tick (expéditeur d'objet, evenargs e), mais je pense que j'ai résolu mon problème. Merci à tous d'avoir répondu



0
votes

Vous avez besoin d'un gestionnaire d'événements, puis après avoir permis d'attribuer un gestionnaire d'événements et de vous arrêter dans votre gestionnaire une condition xxx

................ ... xxx


0 commentaires

0
votes

Les réponses précédentes ici sont toutes correctes, cependant avec .NET 6 / VS2022 Maintenant que la nullabilité est une grosse affaire, et toutes les réponses ci-dessus lanceront l'avertissement du compilateur CS8622.

La solution à ceci est simplement de marquer le Objet source comme nullable dans les paramètres de votre fonction de rappel, comme tel: xxx


0 commentaires