110 votes

Pourquoi existe-t-il 5 versions de classes Timer en .NET?

Pourquoi y a-t-il cinq classes de minuterie dans le framework .Net, à savoir les suivantes:

  1. System.Timers.Timer
  2. System.Threading.Timer
  3. System.Windows.Forms.Timer
  4. System.Web.UI.Timer
  5. System.Windows.Threading.DispatcherTimer

Pourquoi y a-t-il plusieurs versions de la classe Timer? Et quelles sont les différences entre elles?

4 votes

Il existe en fait 4 classes Timer, vous oubliez System.Windows.Forms.Timer et System.Web.UI.Timer (et aussi System.Windows.Threading.DispatcherTimer, mais il a un nom différent...)

1 votes

@ThomasLevesque, merci d'avoir fait remarquer cela, j'ai mis à jour la question.

2 votes

Ils se comportent tous différemment, par exemple System.Threading.Timer crée un nouveau thread à chaque fois qu'il tic tac.

51voto

Bill Tarbell Points 676

Voici une description des minuteries principales et des points que je trouve les plus remarquables.

Winforms.Timer

  • ticks sur le fil UI
  • ticks retardés jusqu'à ce que le fil UI soit inactif
  • saute des ticks si le fil UI est occupé assez longtemps pour que plusieurs ticks s'accumulent

DispatcherTimer

  • appelé sur le fil UI
  • peut définir la priorité pour le niveau d''inactivité' nécessaire pour générer un tick
  • saute des ticks s'ils s'accumulent

Threading.Timer

  • ticks sur un fil de travail du threadpool - aucune option pour spécifier le fil
  • les ticks sont toujours déclenchés à temps
  • aucun n'est sauté - vous devez vous prémunir contre de nouveaux ticks pendant que vous traitez toujours un ancien tick
  • les exceptions non gérées feront planter l'application

Timers.Timer

  • enveloppe autour du threading timer
  • ticks sur un fil de travail pris dans le threadpool CLR
  • peut forcer à tick sur un fil spécifique en fournissant un SynchronizationObject
  • les ticks sont toujours déclenchés à temps
  • aucun n'est sauté
  • absorbe silencieusement les exceptions

12voto

Victor Gorban Points 461

Timers.Timer génère un événement après un intervalle défini, avec une option de générer des événements récurrents. MSDN

Windows.Forms.Timer est un contrôle pour les winforms.

Web.UI.Timer effectue des postbacks de page Web asynchrones ou synchrones à un intervalle défini. MSDN

Threading.Timer est le minuteur pour les rappels. Crée un nouveau thread pour fonctionner. Fourni par des threads du pool de threads. MSDN

Donc, ces minuteurs ont des buts différents, ils sont également utilisés avec des outils différents.

4voto

HackSlash Points 805

Cette question est désormais répondue par Microsoft dans l'article MSDN pour system.timers.timer

https://learn.microsoft.com/fr-fr/dotnet/api/system.timers.timer?view=net-5.0

Conseil

Sachez que .NET inclut quatre classes nommées Timer, chacune offrant une fonctionnalité différente :

System.Timers.Timer (ce sujet) : déclenche un événement à intervalles réguliers. La classe est destinée à être utilisée comme composant serveur ou service dans un environnement multi-thread ; elle n'a pas d'interface utilisateur et n'est pas visible à l'exécution.

System.Threading.Timer : exécute une seule méthode de rappel sur un thread du pool de threads à intervalles réguliers. La méthode de rappel est définie lors de l'instanciation du timer et ne peut pas être modifiée. Comme la classe System.Timers.Timer, cette classe est destinée à être utilisée comme composant serveur ou service dans un environnement multi-thread ; elle n'a pas d'interface utilisateur et n'est pas visible à l'exécution.

System.Windows.Forms.Timer (uniquement pour le .NET Framework) : un composant Windows Forms qui déclenche un événement à intervalles réguliers. Le composant n'a pas d'interface utilisateur et est conçu pour être utilisé dans un environnement mono-thread.

System.Web.UI.Timer (uniquement pour le .NET Framework) : un composant ASP.NET qui effectue des postbacks de page web asynchrones ou synchrones à intervalles réguliers.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X