Mon programme C# a un Windows.forms.timer qui se déclenche tous les 24h pour une tâche d'arrière-plan. Au cours d'une journée, j'ai mis mon Vista 64bit plusieurs fois en mode veille (ne jamais l'éteindre). Il semble que, après le réveil, la minuterie soit en quelque sorte réinitialisée.Que se passe-t-il avec la minuterie de la minuterie après le réveil de veille?
Répondre
Votre minuterie ne doit pas être réglée pour se déclencher toutes les 24 heures, elle doit être réglée pour se déclencher toutes les quelques secondes, ou minutes, et vérifier l'heure. Si l'heure est supérieure ou égale à l'heure à laquelle vous souhaitez que votre tâche se produise, exécutez la tâche.
En mode veille, la mémoire est généralement stockée telle quelle, puis rappelée lorsque vous la réactivez, ce qui peut empêcher votre horloge de se déclencher en mode veille ou d'avoir un comportement imprécis par rapport à ce que vous souhaitez.
Merci, cela semble évident, vous avez raison. Si j'arrête mon système pendant 12h chaque jour, la minuterie s'épuisera comme tous les deux jours. – Henry99
La classe Timer est très détendue quant à l'augmentation de son événement Tick. En interne, à l'intérieur du code Windows, lorsque le temporisateur est dû, il ne définit qu'un indicateur interne, un peu comme "devrait livrer WM_TIMER". Cela n'arrive pas réellement tant que rien d'important ne doit être fait par la boucle de message. Tout message reçoit une priorité plus élevée que WM_TIMER.
Lorsque la boucle de messages Windows Forms appelle GetMessage(), la fonction vérifie si quelque chose doit être renvoyé. Si la réponse est "nothing" et que l'indicateur est défini, il fournit WM_TIMER. Et vous aurez l'événement Tick. Un couple de conséquences à partir de cela: vous pouvez jamais utiliser l'événement tic pour garder une trace de l'heure. Cela va inévitablement prendre du retard. Vous pouvez jamais obtenir l'événement Tick deux fois de suite, il ne rattrape pas. Mais pertinent à votre question: la boucle de message ne pompe pas quand la machine passe en mode veille, rien de spécial ne se passe.
- 1. Utilisation de la minuterie dans Windows Mobile en mode veille
- 2. ASP/AJAX - Minuterie client synchrone avec la minuterie du serveur
- 3. Intervalles de minuterie, Faire une minuterie arrêter une autre minuterie -
- 4. La minuterie d'oscillation expire plus tôt que prévu
- 5. Cocher la minuterie de la minuterie (y compris le comportement asynchrone)
- 6. La minuterie Android s'arrête
- 7. asp: minuterie avec filetage
- 8. Comment changer le format de la minuterie
- 9. Jquery faisant div fondre avec la minuterie
- 10. La tâche de minuterie ne s'exécute pas
- 11. Python Threading avec minuterie
- 12. C# comment utiliser la minuterie?
- 13. minuterie sur le filetage?
- 14. Utilisation de la minuterie une seule fois
- 15. MediaRecorder.setMaxDuration (minuterie int) ce qui se passe lorsque la minuterie expire
- 16. Npapi régler la fonction minuterie
- 17. la minuterie démarre automatiquement pendant le lancement de l'application
- 18. Obtenir l'heure de la minuterie de UIDatePicker?
- 19. minuterie avec rappel
- 20. Problème lors de l'utilisation de la minuterie
- 21. Minuterie de réinitialisation
- 22. Besoin d'aide avec minuterie
- 23. Minuterie dans la performance Ruby
- 24. Popup box avec une minuterie
- 25. delphi 7 réinitialisation de la minuterie
- 26. Prototype JS: passage de la souris avec minuterie?
- 27. Changement de délai dans la minuterie Java
- 28. Démarrage de la minuterie d'un autre projet
- 29. Création d'une simple application de la minuterie
- 30. Travaux de minuterie Sharepoint
Bonne idée, merci – Henry99