8
votes

Frais de temps de la minuterie dans l'application C #

Combien de temps en tête les minuteries proviennent dans une application s'ils fonctionnent en permanence (quel que soit l'intervalle)?

Je ne suis pas inquiet pour les appels que la minuterie fera quand elle tire, mais plutôt sur les effets de performance de l'utilisation de la minuterie dans les applications où la performance est de la plus haute importance et que je suis intéressé à entendre ce qu'il y a de points de vue.


2 commentaires

Il existe des types de fois dans .net msdn.microsoft.com/en-us /magazine/cc164015.aspx Lequel parlez-vous?


Eh bien, je faisais référence aux minuteries en général - mais la demande actuelle où je me suis préoccupé est une application Silverlight, de sorte que je voudrais utiliser le DispatcherTimer. Merci


3 Réponses :


0
votes

L'événement invoqué par la minuterie s'exécutera dans le même thread que la minuterie appartient et bloquera donc ce fil tout en effectuant une logique. Cela signifie que si la minuterie appartient à la couche d'interface graphique, l'exécution de la méthode Timer.Tick va enfermer l'interface graphique pendant son exécution.

Pour maintenir les performances dans le fil principal, je suggère d'utiliser un travailleur d'arrière-plan plutôt que cela s'exécute dans son propre thread.


2 commentaires

Il existe des types de fois dans .net msdn.microsoft.com/en-us /magazine/cc164015.aspx Lequel parlez-vous?


Je faisais référence à System.Windows.Forms.Timer avec ma déclaration ci-dessus.



0
votes

Pour répondre de la même manière: les minuteurs sont inestimables pour la programmation de l'interface graphique, mais sont à peu près inutiles pour des tâches de haute performance. Quelques problèmes avec les minuteries:

  • Ils ne sont pas réguliers à la milliseconde (en fait sous Windows, rien n'est) - il ira à son moment, mais lorsque tous les autres messages (événements de souris-clavier, mises à jour de contrôle) sont traités, car il est sérialisé avec d'autres messages de / à GUI
  • Je ne connais pas la mise en œuvre .NET, mais ils gaspillés des poignées à MFC

    Si vous envisagez un autre thread pour une certaine opération, assurez-vous de ne toucher aucun composant d'interface graphique. Utilisez soit invoquer () ou copiez des mises à jour pour une interface graphique à une file d'attente, puis de le protéger avec la minuterie du fil principal de l'interface graphique.


0 commentaires

8
votes

La minuterie, entre ses tiques, ajoute un coût extrêmement faible à l'application. Il utilise le mécanisme de la planification du système d'exploitation (qui est actif quelles que soient vos actions), par opposition au concept intuitif d'interrogation de l'horloge du système de manière constante.

fondamentalement, autre que l'addition de données de la mémoire et du contexte ajouté (ajouts mineurs dans ce cas ne devrait pas être plus d'ajout d'un bouton à votre formulaire) Il ne devrait y avoir plus de frais généraux.


2 commentaires

En ce qui concerne les minuteries et le filetage, "la mise en commun" et "sondage" sont deux mots différents que l'on devrait faire attention à épeler correctement;)


OMS! Ma faute. Merci, @ d7samurai.