| |
Fortgeschrittene ProgrammierungVB6 Timer mit längerem Interval? | | | Autor: Muflet | Datum: 27.12.06 14:57 |
|
Hallo kurz um ich hab ein kleines programm da drin sind 4 timer
ich kann die timer intervalls nicht höher als 65000 setzen
wie mache ich es GESCHEIT damit ich das intervall erhöhen kann?
Sleep kann sich wohl jeder denken wieso ich es nicht verwenden will, da friert das ganze programm, ich habe es schon mit createwaitabletimer versucht. mit 1 oder 2 timern klappt es sehr gut aber keine ahnung warum es mit 4 nicht geht
Private Sub Form_Load()
Timer1.Interval = 10000
End Sub
Private Sub Timer1_Timer()
'zählt label1 alle 10 sekunden hoch
Label1.Caption = Val(Label1.Caption) + 1
End Sub
-----
was ich jetzt versucht habe sieht so aus
----
Private Sub Form_Load()
Timer1.Interval = 10
End Sub
Private Sub Timer1_Timer()
Wait 1*Timer1.Interval
Label1.Caption = Val(Label1.Caption) + 1
End Sub
---
Wait ist eine Funktion die ich bei M$ für CreateWaitableTimer gefunden habe. Funktioniert normalerweise ganz gut, friert auch das GUI nicht ein, mache ich es jetzt aber mit meinen 4 timern, läuft z.b. timer1 dann auch auf der sekunden zahl die ich timer4 gegeben hab, sprich alle timer orientieren sich am langsamsten.
also wie bekomme ich ein timer hin den ich z.b. nur alle 5 minuten etwas tun lassen kann?
welche guten ideen habt ihr?
nochmal zur klärung
------
Private Sub Command1_Click()
If Timer1.Enabled = False Then
Timer1.Interval = 2
Timer2.Interval = 1
Timer3.Interval = 1
Timer1.Enabled = True
Timer2.Enabled = True
Timer3.Enabled = True
Else
Timer1.Enabled = False
Timer2.Enabled = False
Timer3.Enabled = False
End If
----
funktioniert nicht genau gleich wie
------
Private Sub Command1_Click()
If Timer1.Enabled = False Then
'Timer1.Interval = 2000
'Timer2.Interval = 1000
'Timer3.Interval = 1000
Timer1.Enabled = True
Timer2.Enabled = True
Timer3.Enabled = True
Else
Timer1.Enabled = False
Timer2.Enabled = False
Timer3.Enabled = False
End If
--
tipps?? | |
Re: VB6 Timer mit längerem Interval? | | | Autor: Zardoz | Datum: 27.12.06 16:49 |
| Hallo Muflet,
mit Timern solltest du sparsam umgehen. Bei kurzen Intervallen behindern sie
sich gegenseitig. Für längere Intervalle einen Zähler ins Timer-Event und nur
jeden n-ten Aufruf was ausführen. Alternative wäre das:
http://www.activevb.de/tipps/vb6tipps/tipp0358.html
Gruss,
Zardoz | |
Re: VB6 Timer mit längerem Interval? | | | Autor: Muflet | Datum: 28.12.06 13:10 |
| hey erkläre mir das mal genauer, wie sich die timer gegenseitig behindern. konnte ich bislang noch nicht nachvollziehen also ich hab mal so 10 timer gemacht und jeder hat dann auch das so getan wie er sollte.
also meinst du in etwa so?
Private Sub Timer1_Timer()
x=x+1
if x=1000 then
Label1.Caption = Val(Label1.Caption) + 1
x = 0
End if
End Sub
das heisst er springt mir 1000x in den timer1_timer rein tut aber nur beim 1000. mal das ausführen was er soll? ist das gut so? oder hat jemand noch eine bessere idee? auf die idee bin ich auch schon gekommen aber ich dachte ich krieg das mit waitable timers irgendwie hin.
grundsätzlich soll die timers in meinem programm völlig unabhängig sein und sich am besten gegenseitig NICHT behindern, sprich selbst wenn einer mal hängen sollte sollen die anderer weiter machen.
die API timer schaue ich mir mal in ruhe an. | |
Unzureichend! | | | Autor: Muflet | Datum: 28.12.06 14:43 |
|
Hallo,
das funktioniert unzureichend! Sie dir mein Beispiel an
http://rapidshare.com/files/9267016/TimeMe.zip.html
zur erklärung das programn soll für user sein, diese user können minimal z.b. 1 Sekunde als intervall einstellen sie könnten aber auch 300 einstellen (5 minuten)
es soll in GENAU diesen abständen etwas passieren.
ein timer mit genau einer sekunde kann ich realisieren in dem ich timer1.interval = 1000 mache
höher als 65000 komme ich aber nicht. jetzt gibts dann aber user die einen timer für 300 sekunden bräuchten, also kan ich nicht auf 300*1000 stellen.
es wäre hilfreich einen timer zu haben der
timer1.interval = 1 ' jede sekunde macht nicht millisekunde
timer1.interval = 300 ' alle 300 sekunden macht
dazu müsste der timer selbst einfach nochmal ne sekunde 'schlafen' das hab ich eben mit createwaitabletimer versucht klappt auch soweit nur nicht bei 5 oder 10 oder mehreren timern.
das mit den api timern hab ich mir mal angeschaut, hab im moment nur ne vb5 control creation edition damit meckert er mir immer ungültiger addressof benutzung.
auserdem scheint es etwas kompliziert da ich dem ganzen die adresse einer funktion mitgeben muss, diese funktion ist aber nicht einheitlich
ich hab ein timer1 array
so in etwa
Private Sub Timer1_Timer(Index)
Timer1(Index) bla bla bla
end sub
also das ganze ist dynamisch da ich vorher auch noch nicht weis wieviel timer der user braucht
daher erzeuge ich die on the fly mit load
wie gesagt funktionieren tut das ganze bisher prima die einzige einschränkung ist, dass ein user einen maximalen timer momentan auf 60 sekunden machen kann und das ist unzureichend | |
Wichtig! Wieso ist das so? | | | Autor: Muflet | Datum: 28.12.06 17:03 |
|
Schaut euch BITTE mal mein Code an, ja es sieht bischen wir aus da ich versucht habe zu debuggen und dem ganzen auf die Schliche zu kommen
http://rapidshare.com/files/9283022/Project1.zip.html
Ich kann jetzt den original VB Timer so verlangsamen das ich ihm z.b. timer1.interval = 1 übergebe und er wirklich daraus 1 sekunde macht anstatt 1 millisekunde
leider hat die wait funktion von MS viele bugs. der erste bug war das sie alle anderen exes ausbremsen würde. sprich hab ich eine exe die heisst test1.exe und starte sie 2x werden beide test1.exe ausgebremst. das hab ich gefixed.
das zweite problem ist das ich den schnellsten timer zu erst starten muss.
warum? wer findet den fehler im code? schaut euch die beiden Buttons an, die engine ist die selbe, es wird lediglich Timer3 VOR Timer2 gestartet
warum geht es dann und wenn ich timer1,timer2,timer3 hintereinander starte dann nicht??? | |
Re: VB6 Timer mit längerem Interval? | | | Autor: wa_gru | Datum: 29.12.06 19:26 |
| Warum keinen Api Timer ? | |
Re: VB6 Timer mit längerem Interval? | | | Autor: Muflet | Datum: 02.01.07 10:03 |
|
hmm wie kann ich die während des programmes zur laufzeit dynamisch mehrere erzeugen am besten in einm array und jeder tut etwas anderes?
mit einem timer array klappt das bisher alles wunderbar | |
| 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 |
|
|
sevOutBar 4.0
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
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
|
|