Sevgili Delphi programcıları,One-Shot Zamanlayıcılar
Ben
Açıklayayım ... (soru dışında VCL Sayacindan böylece hiçbir GUI) tek seferlik zamanlayıcı nasıl yazılacağını yardım arıyorum biraz daha. Benim kod
(VCL zamanlayıcı ile açıklayan ama bu özel projede hiçbir formları var):- Çağrı seri port
- üzerinde bir char gönder
procedure
bir X miktarının ile bir zamanlayıcı etkinleştirmeOnTimer
durumundaInterval
:
sonra th devre dışı bir char göndermek bir kod var e zamanlayıcı kendini asla tekrar çalıştırılamaz.
sorun
Bunları zamanlayıcılar yaratılması dinamik hale getirmek için ihtiyaç olmasıdır.SetTimer()
ve
KillTimer()
işlevlerini "OnTimer olayında" devre dışı bırakmak için onu (ücretsiz olarak) düşünmüştüm. İyi bir (güvenli) yolu
mi?
Teşekkür ederiz!
Bir süre önce ['benzer bir şey '] (http://stackoverflow.com/q/10468787/960757) yaptım. Yaklaşımınız kulağa hoş geliyor, ama unutmayın ki, bir seferde birden fazla zamanlayıcıya başlayacak olursanız, bunların hepsinin ortak bir geri çağırma provası kullandıysanız hangisinin bir zaman aşımına uğradığını ayırt etmeniz gerekir. – TLama
'SetTimer()' fonksiyonunu, zamanlayıcıya "Benzersiz Kimlik" koyabiliyor ve kimlikleri – ELCouz
ile öldürebiliyordum. Evet, işte bu kodda yapıyorum. Zamanlayıcı aralığı geçtiğinde gerçekleştirilmesi gereken bir zamanlayıcı kimlikleri ve prosedürleri koleksiyonu saklıyorum. Olduğunda, o koleksiyonda geçen bir zamanlayıcının kimliğine göre bir öğe için arama yaptım ve bulunduğunda, zamanlayıcıyı öldürürüm, bu yordamı gerçekleştirir ve koleksiyonda bulunan bu öğeyi silerim. – TLama