Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - pausa
Forum - Visual Basic 6 - pausa

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
salve ragazzi....
  
e' da qualche mese che sto' lavorando ad un programmino di chat....e c'e' una sub chi investe un ruolo di una certa importanza , cioe' crea un ritardo,.....
Codice sorgente - presumibilmente VB.NET

  1. Sub Pause(ByVal interval As Double)
  2.     Dim Current As Double
  3.     Current = Timer
  4.     Do While Timer - Current < interval
  5.     DoEvents
  6.     Loop
  7. End Sub


questa funzione non fa' altro che creare un ritardo dove viene inserita ed e' davvero comodissima al posto di usare un delay,....
es.

private sub command1_click()
   pause 1
   msgbox "ciao"
end sub

facendo cosi' si ritarda di un secondo, dopo l'esecuzione dell'evento click , dell amessa a video del messagebox.....  
questo codice originariamente proviene da planetsource code, poi e' stato modificato da antoniog di p2pforum, che mi ha concesso di pubblicare il sorgente con notevoli migliorie, ovviamente con i riconoscimenti.....

il problema di fondo e' che questo codice contiene un doevents, che porta ad un utilizzo esoso della cpu.....
dovrei modificare questa funzione in modo tale che questo doevents non ci sia piu'.....
qualcuno ha qualche idea?......

Ultima modifica effettuata da il 12/05/2008 alle 22:15
PM Quote
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Segnala al moderatore
Postato alle 10:53
Lunedì, 12/05/2008
uno sleep???

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 11:09
Lunedì, 12/05/2008
Codice sorgente - presumibilmente VB.NET

  1. Sub Pause(ByVal interval As Double)
  2.     Dim Current As Double
  3.     Current = Timer
  4.     Do While Timer - Current < interval
  5.        Sleep 15
  6.        DoEvents
  7.     Loop
  8. End Sub



Questo dovrebbe bastare ... ovviamente devi aggiungere la dicharazione della API Sleep ...

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 11:16
Lunedì, 12/05/2008
anche lo sleep mi era stato suggerito in passato....ma a mio avviso ha parecchi inconvenienti, sicuramente ha un uso quasi nullo della cpu, pero' dal canto suo blocca l'intera applicazione , di per se' un secondo non e' nulla, ma questa funzione la ho usata anche per intervalli di 10 secondi, ed in taluni casi mi e' tornata utile in alcuni cicli do while che mi permettevano di evitare l'inserimento di un timer, che potrebbero girare per alcuni minuti, il che' renderebbe l'inserimento dello sleep alquanto sconveniente,.....non e' detto che questa funzione si riesca a migliorarla modificandola puo' anche essere necessario doverla riscrivere da zero....
la cosa appare semplice , ma in realta' e' piu' compessa di quello che sembra....per quello ho chiesto aiuto a questo forum.... io sono solo un beghinner in programmazione e da solo non ci arrivo....

Ultima modifica effettuata da il 12/05/2008 alle 11:19
PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 11:32
Lunedì, 12/05/2008
Guarda che ti ho suggerito di inserire 15 millisecondi di sleep all'interno del ciclo con il DoEvents ... Non ti accorgerai del fatto che il thread si blocca per 15 ms ma se ne accorgera' la CPU che non sara' piu' impegnata. Il DoEvents garantira' il dispatch dei messaggi.

P.S. Sei un beginner anche con l'inglese ... :-)

PM Quote
Avatar
P4p3r0g4 (Member)
Guru


Messaggi: 1319
Iscritto: 29/12/2006

Segnala al moderatore
Postato alle 16:57
Lunedì, 12/05/2008
un do loop aperto stressa un bel po la CPU non e` consigliabile usarlo anzi..

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 19:42
Lunedì, 12/05/2008
Testo quotato

Postato originariamente da P4p3r0g4:

un do loop aperto stressa un bel po la CPU non e` consigliabile usarlo anzi..



Con la Sleep no ...

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 21:42
Lunedì, 12/05/2008

Con la Sleep no ...

infatti....ho fatto la prova con il tasckmanager e la cpu non se neccorge neanche.....non pensavo di avere un miglioramento simile.....

grazie mille....

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 21:44
Lunedì, 12/05/2008
Quello che ti ha aiutato su p2p e'

antoniog (con la g finale non la q ...)

e io sono

gantonio

:)

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo