vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Re: gefährliche Schleifen 
Autor: Preisser
Datum: 03.10.10 19:02

Naja, so schlecht ist das eigentlich nicht. Ich hatte bisher noch nie irgendwelche Probleme mit dem Timern. Wie bereits andere gesagt haben, gibt es ja unter VB6 den DoEvents-Befehl, den du verwenden kannst, wenn du zeitintensiven Code ausführst und dabei die GUI weiterhin reagieren soll. Das kann man z.b. benutzen, wenn eben etwas länger dauert zum Berechnen und man den Benutzer mit einer Progressbar über den Fortschritt der Berechnung informieren will.

Falls du trotzdem beispielsweise in einem Timer Code ausführst, der evtl. länger dauert, und du aber willst, dass der Timer z.b. alle 2 Sekunden den Code ausführt (also nicht "stehenbleibt", wenn der Code länger braucht), kannst du ja folgenden Trick benutzen:
Setze das Intervall des Timers anstatt 2000 ms z.B. auf 20 ms, und speichere in einer Variable, wann das letzte Mal der Timer aufgerufen wurde. Wenn das länger als 2 Sekunden her ist, setze die Variable auf den aktuellen Wert und führe den Code aus.
Beispiel:

Private Declare Function GetTickCount Lib "kernel32" () As Long
 
Private Sub Timer1_Timer()
    Static TimerIntervall As Long
    Static LetzterTimerAufruf As Long
    TimerIntervall = 2000
    If LetzterTimerAufruf = 0 Or (GetTickCount - LetzterTimerAufruf > _
      TimerIntervall) Then
        LetzterTimerAufruf = GetTickCount
 
 
        ' Code zum Ausführen
        ' ...
 
        ' Ende Code zum Ausführen
 
    End If
End Sub
Die Variable TimerIntervall gibt dann das Intervall des Timers an (hier: 2 Sekunden).

Zwischen 'Code zum Ausführen' und 'Ende Code zum Ausführen' kommt dann der Code, der normalerweise in dem Timer stehen würde.

Hier wird die API-Funktion GetTickCount() verwendet, da diese die Zeit seit dem Start des Betriebssystems in Millisekunden zurückgibt, unabhängig von der eingestellten Systemzeit (es hat also keine Auswirkungen, wenn während der Ausführung des Programms die PC-Zeit geändert wird).

Beitrag wurde zuletzt am 03.10.10 um 19:23:46 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
gefährliche Schleifen1.276marvin_9413.09.10 11:32
Re: gefährliche Schleifen766marvin_9403.10.10 10:03
Re: gefährliche Schleifen806Preisser03.10.10 13:42
Re: gefährliche Schleifen723marvin_9403.10.10 15:05
Re: gefährliche Schleifen764Preisser03.10.10 19:02
Re: gefährliche Schleifen754marvin_9404.10.10 20:24

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel