Une question qui revient souvent concerne le fait qu’il y existe deux classes Timers dans le .NET : System.Windows.Forms.Timer et System.Timers.Timer.
Alors pourquoi me direz-vous? Et bien parce que ce ne sont pas les mêmes usages.
System.Windows.Forms.Timers
Ce timer se base sur un message Windows envoyé à l’application et qui sera donc traité par la boucle des messages et donc dans le thread de l’interface.
Avantage : Pas besoin de faire des Invoke pour accéder à l’interface puisque l’événement levé par le timer sera traité par le thread de l’interface.
Inconvénient : Le timer n’est pas précis car il passe par le système de messages de Windows. De plus il ne profite pas des multi-cpus du fait que tout est exécuté par un seul thread.
System.Timers.Timer
Ce timer se base sur des timers natifs (qui utilisent des threads).
Avantage : Très précis et gére bien les ressources mutli-cpus.
Inconvénient : Nécessite des Invoke pour accéder à l’interface.
.Net, Windows, Windows Forms