|
|
 | Delay, Wait, Sleep? Fra : Bjørn |
Dato : 05-03-02 12:56 |
|
Hvad dævlen hedder den funktion i VB6...
I C++ hedder den Sleep(x) hvor x er i ms.
Har set flere basic varianter hvor enten delay eller wait virker... Men jeg
kan dælme ikke hitte ud af det i VB6 :-/
--
Mvh Bjørn
Bil- og computernød
| |
Jens Vestergaard (05-03-2002)
 | Kommentar Fra : Jens Vestergaard |
Dato : 05-03-02 13:03 |
|
"Bjørn" <b.norgaaard@wanadoo.dk> skrev i en meddelelse
news:a62bqr$1ct$1@sunsite.dk...
> Hvad dævlen hedder den funktion i VB6...
>
I modul:
Public Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds
As Long)
I din kode:
Sleep(500) '500 ms
--
mvh
Jens Vestergaard
www.railsoft.dk
| |
Jan V. (05-03-2002)
 | Kommentar Fra : Jan V. |
Dato : 05-03-02 13:01 |
|
"Bjørn" <b.norgaaard@wanadoo.dk> skrev i en meddelelse
news:a62bqr$1ct$1@sunsite.dk...
> Hvad dævlen hedder den funktion i VB6...
>
> I C++ hedder den Sleep(x) hvor x er i ms.
> Har set flere basic varianter hvor enten delay eller wait virker... Men
jeg
> kan dælme ikke hitte ud af det i VB6 :-/
>
> --
> Mvh Bjørn
> Bil- og computernød
>
>
Hej Bjørn
Nyt at se dig i den her gruppe - det plejer vist at være dk.fritid.bil at du
hærger.
Du skal i et modul tilføje dette:
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Derefter er det bare at Sleep(1000) = stopper i 1000 ms
Jan
| |
Bjørn (05-03-2002)
 | Kommentar Fra : Bjørn |
Dato : 05-03-02 13:44 |
|
"Jan V." <jv@miljodata.dk> wrote in message
news:3c84b6bb$0$41154$edfadb0f@dspool01.news.tele.dk...
>
> "Bjørn" <b.norgaaard@wanadoo.dk> skrev i en meddelelse
> news:a62bqr$1ct$1@sunsite.dk...
> > Hvad dævlen hedder den funktion i VB6...
> >
> > I C++ hedder den Sleep(x) hvor x er i ms.
> > Har set flere basic varianter hvor enten delay eller wait virker... Men
> jeg
> > kan dælme ikke hitte ud af det i VB6 :-/
> >
> > --
> > Mvh Bjørn
> > Bil- og computernød
> >
> >
> Hej Bjørn
>
> Nyt at se dig i den her gruppe - det plejer vist at være dk.fritid.bil at
du
> hærger.
Hærger og hærger... Det er nogle sjove gutter der hænger ud derinde. Er i
det sidste gået i passiven derinde da bilen efterhånden bare bliver smidt på
et værksted når der er noget galt... Har ikke helt tiden til det længere,
desværre (altså at rode med bilen selv)
> Du skal i et modul tilføje dette:
>
> Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
>
> Derefter er det bare at Sleep(1000) = stopper i 1000 ms
Det spiller max
--
Mvh Bjørn
Bil- og computernød
| |
 Tomas Christiansen (05-03-2002)
 | Kommentar Fra : Tomas Christiansen |
Dato : 05-03-02 23:03 |
|
Bjørn skrev:
> > Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As
Long)
> >
> > Derefter er det bare at Sleep(1000) = stopper i 1000 ms
> Det spiller max
Husk blot at når dit program "sover" med Sleep, så er det IKKE til at
vække før sleep-perioden er udløbet!
Med andre ord reagerer dit program på INTET (museklik, event, ...) i
den tid.
Længere pauser (over 1 sekund) kan f.eks. foretages med en løkke
indholdende en sleep med en passende tid (f.eks. 100 ms), som kører
indtil vente-tiden er overstået. Derved vil dit program reagere på
"ydre stimuli" selvom det "venter".
-------
Tomas
| |
  Jens Vestergaard (06-03-2002)
 | Kommentar Fra : Jens Vestergaard |
Dato : 06-03-02 08:42 |
|
"Tomas Christiansen" <toc@blikroer.removethis.dk> skrev i en meddelelse
news:a63fb5$mna$1@news.cybercity.dk...
> Bjørn skrev:
> > Det spiller max
>
> Husk blot at når dit program "sover" med Sleep, så er det IKKE til at
> vække før sleep-perioden er udløbet!
> Med andre ord reagerer dit program på INTET (museklik, event, ...) i
> den tid.
>
> Længere pauser (over 1 sekund) kan f.eks. foretages med en løkke
> indholdende en sleep med en passende tid (f.eks. 100 ms), som kører
> indtil vente-tiden er overstået. Derved vil dit program reagere på
> "ydre stimuli" selvom det "venter".
Helt enig. Ved lange pauser, hvor præcisionen ikke er *så* væsentlig, plejer
jeg at bruge en Sub noget i retning af:
Public Sub Pause(sVent As Single)
Dim sPauseStart as Single
sPauseStart = Timer
Do Until Timer > sPauseStart + sVent
DoEvents
Loop
End Sub
Man skal bare tænke grundigt over, hvad der kan ske, mens løkken kører.
DoEvents kan godt være lidt 'farlig', men den tillader f.eks. at klik på an
Annuller-knap registreres.
--
mvh
Jens Vestergaard
www.railsoft.dk
| |
   Tomas Christiansen (06-03-2002)
 | Kommentar Fra : Tomas Christiansen |
Dato : 06-03-02 22:35 |
|
Jens Vestergaard skrev:
> Helt enig. Ved lange pauser, hvor præcisionen ikke er *så*
væsentlig, plejer
> jeg at bruge en Sub noget i retning af:
>
> Public Sub Pause(sVent As Single)
> Dim sPauseStart as Single
> sPauseStart = Timer
> Do Until Timer > sPauseStart + sVent
> DoEvents
> Loop
> End Sub
Ja, men problemet med denne løkke er, at den kan tage ganske meget
CPU-tid!
Du spørger måske 10000 gange i sekundet om der skulle være gået et
sekund, hvilket jo egentlig er ganske unødvendigt.
Desuden vil det gå galt, hvis du forsøger at vente fra kl. lidt i 12
midnat til kl. lidt over 12 midnat.
Hvis du i stedet indsætter en 'Sleep' vil du minimere CPU-problemet
gevaldigt. Desuden kan du undgå en masse unødvendig floatng-point
aritmetmetik, samt undgå problemer med dato-skift midt i
venteperioden.
Sub Pause(ByVal lSekunder As Long)
Dim dNuErDetTid As Date
dNuErDetTid = DateAdd("s", lSekunder, Now)
Do Until Now >= dNuErDetTid
Sleep 100
DoEvents
Loop
End Sub
> Man skal bare tænke grundigt over, hvad der kan ske, mens løkken
kører.
> DoEvents kan godt være lidt 'farlig', men den tillader f.eks. at
klik på an
> Annuller-knap registreres.
Det er nemlig helt rigtigt.
Den serialisering af event-procedurer, som man ellers får "forærende"
af VB's runtime miljø, kan gå helt i smadder ved brugen af DoEvents.
Det kan både være rart og godt, men det kan også være noget skidt og
kanel.
F.eks. kunne man i Pause proceduren udvide løkkens betingelse til:
Do Until Now >= dNuErDetTid Or g_bTerminateNow
Hvor man så i f.eks. i en click-event-procedure for en cancel-knap kan
sætte g_bTerminateNow=True.
(Bemærk at jeg i navngivningen antyder at g_bTerminateNow er en global
(g), booelsk (b) variabel.)
-------
Tomas
| |
    Jens Vestergaard (07-03-2002)
 | Kommentar Fra : Jens Vestergaard |
Dato : 07-03-02 09:03 |
|
"Tomas Christiansen" <toc@blikroer.removethis.dk> skrev i en meddelelse
news:a6622r$1h18$1@news.cybercity.dk...
> Jens Vestergaard skrev:
> > Helt enig. Ved lange pauser, hvor præcisionen ikke er *så*
> væsentlig, plejer
> > jeg at bruge en Sub noget i retning af:
> >
[SNIP kode]
> Ja, men problemet med denne løkke er, at den kan tage ganske meget
> CPU-tid!
> Du spørger måske 10000 gange i sekundet om der skulle være gået et
> sekund, hvilket jo egentlig er ganske unødvendigt.
Du har ret. 'Problemet' er, at jeg har været så privelegeret, at mine apps
(hvori disse funktioner har været) har kørt på dedikerede maskiner, hvor jeg
var alene om at definere, hvad der skulle ske. Og hvornår.
Men det er en luksus - så dine bemærkninger er helt på deres plads
--
mvh
Jens Vestergaard
www.railsoft.dk
| |
     Tomas Christiansen (07-03-2002)
 | Kommentar Fra : Tomas Christiansen |
Dato : 07-03-02 10:49 |
|
Jens Vestergaard skrev:
> Du har ret. 'Problemet' er, at jeg har været så privelegeret, at mine apps
> (hvori disse funktioner har været) har kørt på dedikerede maskiner, hvor jeg
> var alene om at definere, hvad der skulle ske. Og hvornår.
>
> Men det er en luksus - så dine bemærkninger er helt på deres plads
Det er altid rart, når der er enighed om tingene.
Jeg har arbejdet i 10 år på mainframe - en del af årene som systemprogrammør/systemadministrator - så det "ligger i blodet" hos mig
at tænke på den slags...
-------
Tomas
| |
|
|