Zum Inhalt springen

langer Timer in VB?


Scav

Empfohlene Beiträge

Hi!

Die beste Lösung ist wie so oft die Windows-API. Mit der Funktion SetTimer ist ein Intervall über Tage und Wochen möglich, ohne durch irgendwelche Schleifen den Prozessor unnötig zu belasten. Hier ein Beispiel (besteht aus einer Form und einem Modul):

'---------------------------Anfang der Form-------------------------------

Option Explicit


Private Sub Form_Load()

  Call Init(1000)  'Initialisierung des Timers mit 1000 millisek

End Sub


Private Sub Form_Unload(Cancel As Integer)

   'Wichtig: Reset des Timers vor Programmende!!!

  If TimerEnabled Then Call Terminate

End Sub

'----------------------------Ende der Form--------------------------------



'--------------------------Anfang des Moduls------------------------------

Option Explicit


Private Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, _

        ByVal nIDEvent As Long, ByVal uElapse As Long, _

        ByVal lpTimerFunc As Long) As Long 'API zum Timer setzen


Private Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, _

        ByVal nIDEvent As Long) As Long    'API zum Timer-Reset



Public TimerEnabled As Boolean  'Zum Nachprüfen ob Timer gesetzt

Private hTimer As Long  'Nummer des gesetzten Timers

                        '(wird für Reset gebraucht!)


Public Sub Init(lInterval As Long)  'Timer setzen

  hTimer = SetTimer(0, 0, lInterval, AddressOf TimerProc)

  'Timer wird mit dem Intervall lInteval gesetzt, bei einem

  'Timer-Ereignis wird die Sub TimerProc aufgerufen

  TimerEnabled = True

End Sub


Public Sub Terminate()  'Timer resetten (unbedingt bei Programmende!)

  Call KillTimer(0, hTimer) 'Reset des Timers mit der Nummer hTimer

  TimerEnabled = False

End Sub


Private Sub TimerProc(ByVal hWnd As Long, ByVal Msg As Long, _

                      ByVal idEvent As Long, ByVal dwTime As Long)

'Diese Sub wird bei einem Timer-Ereignis aufgerufen

Static lIndex As Long 'Index zur Demo des Timers


  lIndex = lIndex + 1

  Form1.Caption = lIndex

End Sub

'---------------------------Ende des Moduls-------------------------------

Es ist etwas länger als konventionelle Lösungen, aber wie gesagt ist es die beste (weil Prozessorschonende) Lösung.

cu, frankos

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...