Les classes Timers de .NET

21. octobre 2009

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

Commentaires (2) -

22/10/2009 09:46:45 #
Bon pour info il y en a au moins 3 (sans compter WPF) ;) :
msdn.microsoft.com/en-us/magazine/cc164015.aspx
22/10/2009 10:14:52 #
Tout a fait cher ami. En fait ce post etait une réponse à une question que j'ai eu en consulting.
Merci pour le complémentSmile