Gibt es eine Möglichkeit zu erkennen, dass abgelaufene Ereignisse des Timers sich überschneiden? Zum Beispiel erzeuge ich einen Timer mit einem Intervall von 200ms zwischen den verstrichenen Ereignissen, aber der ausgeführte Code bei einem Ereignis dauert mehr als 200 ms. Als Ergebnis wird ein weiteres verstrichenes Ereignis ausgeführt, bevor das letzte beendet wird. Gibt es auch eine Möglichkeit, dies zu verhindern, so dass ein anderes Ereignis nicht aufgerufen wird, bevor das letzte Ereignis beendet ist?.NET - Ereignisüberlappung für abgelaufene Zeit
Antwort
Wenn Sie Ihre Timer-Ereignisse wollen auf der 200ms Marke passieren und nur eine überspringen (und nicht verschieben sie), wenn der vorherige noch läuft, dann können Sie Sperrcode verwenden.
Wenn Sie die Methode Monitor.TryEnter verwenden, gibt es einen Boolean zurück, der Ihnen sagt, ob es die Sperre hat (und somit wenn ein anderer Thread bereits im gesperrten Code ist). Dies ermöglicht es Ihnen, einfach überzuspringen und auf die nächste Laufzeit zu warten, wenn Sie wollen (oder Debug-Nachrichten ausschreiben, die sich beschweren, dass es zu lange dauert oder so).
Ob dies eine gute Lösung ist, hängt wirklich davon ab, was Ihr Timer tun möchte. Oft ist die Methode, die andere vorgeschlagen haben, den Timer für das nächste Ereignis zu starten, sobald der vorherige abgeschlossen ist, für den Job mehr als ausreichend.
Werfen Sie einen Blick auf Timer.Stop Method
Verwendung Wenn Sie den nächsten Zyklus nach die aktuelle beendet ist, stoppen Sie den Timer feuern wollen, wenn er trifft es Ereignis Zecke, und es neu starten, wenn Sie fertig sind.
Timer fires Tick-Event
Disable/Stop Timer
Program logic goes here
Restart Timer
- 1. Java-Zeit abgelaufene Liste/Set?
- 2. Set Formular Authentifizierung Cookies abgelaufene Zeit
- 3. Java 1.8: Abgelaufene Zeit threadsicher messen
- 4. Wie wird die abgelaufene Zeit einer Funktion berechnet?
- 5. SUM() abgelaufene Zeit in Sql mit Text Datentyp
- 6. Wie erstellt man eine abgelaufene Zeit in Javascript?
- 7. Zeit/Raum-Komplexität für .net intersect() -Methode
- 8. Nur-Zeit-Picker für .NET WinForms?
- 9. Wenn Benchmarking, was die abgelaufene CPU-Zeit weniger als die Benutzer-CPU-Zeit
- 10. Feder Sicherheitsset abgelaufene URL
- 11. Abgelaufene Artikel verschieben?
- 12. Brauchen Empfehlungen für. Net Datenzugriffsschicht für kurze Zeit Projekt
- 13. AFNetworking SSL Pinning abgelaufene Zertifikate
- 14. Abgelaufene Prozesse, wenn Java Startterminalausführung
- 15. VS 2015 abgelaufene Lizenz (Systemdatum)
- 16. Konvertieren Abgelaufene Zeitstempel mit Logstash Float
- 17. System.currentMillis zu keeptrackof abgelaufene Elemente in Java
- 18. R IBrokers API schlägt fehl, reqHistoricalData für abgelaufene Monate
- 19. Gibt es eine Möglichkeit, die abgelaufene Zeit in der Timer-Funktion mit Matlab zu subtrahieren/summieren?
- 20. TPL .net 4.0 messageBox mit verstrichener Zeit
- 21. [nodejs] Wie expressjs die abgelaufene Sitzung zerstören?
- 22. Abgelaufene Sitzungen: Sollte ich sie zufällig löschen?
- 23. Abgelaufene oder widerrufene Signaturzertifikate mit Infopath-Dokumenten
- 24. Client über abgelaufene Sitzung benachrichtigen - Webprogrammierung
- 25. Dateiverschlüsselungsbibliothek für .NET
- 26. PerformanceCounterType für durchschnittliche Zeit
- 27. Joda-Zeit für Javascript?
- 28. Verteiltes Dateisystem für .NET
- 29. Konstante Zeit Hash für Strings?
- 30. ungültige oder abgelaufene Sicherheitskontext-Token in WCF Webservice
Möchten Sie, dass der zweite Anruf 200ms nach dem letzten Anruf oder sofort erscheint? – Reddog