Drogi Delphi programistów,One-Shot Timers
szukam pomocy, jak napisać czasomierza One-Shot (nr GUI, więc VCL Timers z pytaniem) ...
Wytłumaczę nieco więcej.
W moim kodu (tłumacząc z VCL czasomierz, ale w tym konkretnym projekcie mam żadnych form):
- Skontaktować się z
procedure
który wysłać char nad portem szeregowym - Włącz timer z kwotą X z
Interval
W przypadku OnTimer
:
mam kod, który następnie wysłać char wyłączyć th sam zegar, aby nigdy nie zostać ponownie wykonanym.
Problem polega na tym, że muszę sprawić, by tworzenie tych timerów było dynamiczne. Pomyślałem o funkcji SetTimer()
następnie KillTimer()
w "Zdarzeniu OnTimer", aby je wyłączyć (zwolnić).
Czy to jest dobry (bezpieczny) sposób?
Dziękujemy!
Zrobiłem [coś podobnego] (http://stackoverflow.com/q/10468787/960757) jakiś czas temu. Twoje podejście brzmi dobrze, ale zauważ, że jeśli uruchomisz więcej niż jeden timer na raz, musisz rozróżnić, który z nich uruchomił ten limit czasu, jeśli używasz wspólnego procesu oddzwaniania dla wszystkich z nich. – TLama
Czytałem, że funkcja 'SetTimer()' można umieścić "Unikalny identyfikator" na czasomierzu i zabić przez ich identyfikatory – ELCouz
Tak, właśnie to robię w tym kodzie. Przechowuję kolekcję identyfikatorów i procedur czasomierza, które powinny być wykonywane po upłynięciu określonego czasu. Kiedy to się dzieje, przeszukuję w tej kolekcji element o identyfikatorze licznika upływającego czasu, a jeśli zostanie znaleziony, zabijam timer, wykonuję tę procedurę i usuwam znaleziony przedmiot z kolekcji. – TLama