/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Deadloop
Fra : news1filter@dk2net.d~


Dato : 07-05-01 17:34

Hey,

Jeg har et program med "deadloop". Det laver forskellige ting en gang
pr. interval (f.eks. hvert 10 min).

Mit problem er at når jeg lukker programmet så kører det videre.
Vinduet lukker men når intervallet er gået, så dukker det op igen og
laver de ting der skal gøres (i test bare en MsgBox). Programet
skifter _ikke_ processID og "Form_Terminate()" bliver ikke kaldt.

Hjælp...


 
 
Asbjørn Sloth Tønnes~ (07-05-2001)
Kommentar
Fra : Asbjørn Sloth Tønnes~


Dato : 07-05-01 20:10

<news1filter@dk2net.dk> skrev i en meddelelse news:qijdft8hr0ptgpa1b022ikjfip3s6lcdgc@4ax.com...
> Hey,
>
> Jeg har et program med "deadloop". Det laver forskellige ting en gang
> pr. interval (f.eks. hvert 10 min).
>
> Mit problem er at når jeg lukker programmet så kører det videre.
> Vinduet lukker men når intervallet er gået, så dukker det op igen og
> laver de ting der skal gøres (i test bare en MsgBox). Programet
> skifter _ikke_ processID og "Form_Terminate()" bliver ikke kaldt.
>
> Hjælp...
>
Brug en timer sat til 600000 M$

Asbjørn


Tomas Christiansen (07-05-2001)
Kommentar
Fra : Tomas Christiansen


Dato : 07-05-01 22:52

Asbjørn Sloth Tønnesen skrev:
> Brug en timer sat til 600000 M$

Den højeste værdi man kan tildele Interval egenskaben på en Timer er
desværre kun 65535 ms (dvs. lidt over et minut), men ellers har du ret: Det
er normalt bedre at bruge en timer, frem for at bruge en løkke, når "noget"
skal gøres med faste intervaller.

Brug f.eks. en timer sat til 60000 (dvs. 1 minut), og lad den tælle en
tæller én op. Når tælleren når 10, udføres arbejdet og tælleren nulstilles.

Alternativt, hvis man af én eller anden grund, ønsker fortsat at bruge
"aktiv venten" (dvs. en løkke), kan følgende trick klare ærterne:

Private Unloading As Boolean

Private Sub Form_Load()
Me.Show
Do
'Dette er bare lykken!
DoEvents
Loop Until Unloading
End Sub

Private Sub Form_Unload(Cancel As Integer)
Unloading = True
End Sub

-------
Tomas



Deer Hunter (07-05-2001)
Kommentar
Fra : Deer Hunter


Dato : 07-05-01 23:50

Hvad med at bruge API istedet ?

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Command1_Click()
Debug.Print "Started - " & Time()
Sleep 65536
Debug.Print "Ended - " & Time()
End Sub


"Tomas Christiansen" <toc@blikroer.removethis.dk> wrote in message
news:lOEJ6.406$%65.27107@news.get2net.dk...
> Asbjørn Sloth Tønnesen skrev:
> > Brug en timer sat til 600000 M$
>
> Den højeste værdi man kan tildele Interval egenskaben på en Timer er
> desværre kun 65535 ms (dvs. lidt over et minut), men ellers har du ret:
Det
> er normalt bedre at bruge en timer, frem for at bruge en løkke, når
"noget"
> skal gøres med faste intervaller.
>
> Brug f.eks. en timer sat til 60000 (dvs. 1 minut), og lad den tælle en
> tæller én op. Når tælleren når 10, udføres arbejdet og tælleren
nulstilles.
>
> Alternativt, hvis man af én eller anden grund, ønsker fortsat at bruge
> "aktiv venten" (dvs. en løkke), kan følgende trick klare ærterne:
>
> Private Unloading As Boolean
>
> Private Sub Form_Load()
> Me.Show
> Do
> 'Dette er bare lykken!
> DoEvents
> Loop Until Unloading
> End Sub
>
> Private Sub Form_Unload(Cancel As Integer)
> Unloading = True
> End Sub
>
> -------
> Tomas
>
>



Tomas Christiansen (08-05-2001)
Kommentar
Fra : Tomas Christiansen


Dato : 08-05-01 08:02

Deer Hunter skrev:
> Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
>
> Private Sub Command1_Click()
> Debug.Print "Started - " & Time()
> Sleep 65536
> Debug.Print "Ended - " & Time()
> End Sub

Sleep er meget fint at bruge - især hvis man ønsker at benytte "aktiv
vente"-metoden.

Men man skal også passe meget på med at bruge Sleep!

I den tid programmet sover, reagerer det slet ikke på udefra kommende
påvirkninger (dvs. events), så det kan godt gå hen og blive problematisk,
hvis programmet sover et helt minut ad gangen. Prøv bare at flytte vinduet
på skærmen eller at lukke programmet ned.

Jeg vil som tommelfingerregel sige at man ikke skal lade sit program sove i
mere end 1 sekund ad gange, og personligt bruger jeg aldrig sleep med
værdier større end 100 (kombineret med brugen af DoEvents).

-------
Tomas



news1filter@dk2net.d~ (08-05-2001)
Kommentar
Fra : news1filter@dk2net.d~


Dato : 08-05-01 13:49

> Alternativt, hvis man af én eller anden grund, ønsker fortsat at bruge
> "aktiv venten" (dvs. en løkke), kan følgende trick klare ærterne:

Undskyld den sene tilbagemelding. Men det var præcis hvad jeg skulle
bruge. Jeg takker mange gange.

Jeg troede dog at "unload" blev kaldt efter "terminate". Men åbenbart
ikke. Så hvis jeg havde været lidt kvik, så havde jeg også smidt en
MsgBox i unload eventen ;)

Men som sagt tak for hjælpen.


Tomas Christiansen (08-05-2001)
Kommentar
Fra : Tomas Christiansen


Dato : 08-05-01 14:40

news1filter skrev:
> Jeg troede dog at "unload" blev kaldt efter "terminate".

Nej. Terminate er det sidste, som hænder.

> Så hvis jeg havde været lidt kvik

Ingen kommentarer

-------
Tomas



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408893
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste