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 - Processi concorrenti
Forum - Visual Basic 6 - Processi concorrenti

Avatar
Flyman (Normal User)
Rookie


Messaggi: 27
Iscritto: 03/04/2007

Segnala al moderatore
Postato alle 11:02
Martedì, 03/04/2007
Un saluto a tutta la comunità.
Vorrei sapere come fare a realizzare una procedura o sub in vb6 che esegua un operazione tipo caricare un file ma che sia disponibile anche se e' già in esecuzione (mentre carica un file lancio un'altra richiesta per caricare un altro file senza fermare la prima richiesta).

PM Quote
Avatar
Hacker (Member)
Guru


Messaggi: 1014
Iscritto: 06/06/2006

Segnala al moderatore
Postato alle 11:50
Martedì, 03/04/2007
dici DoEvents ?:-|

PM Quote
Avatar
Flyman (Normal User)
Rookie


Messaggi: 27
Iscritto: 03/04/2007

Segnala al moderatore
Postato alle 12:16
Martedì, 03/04/2007
no mi spiego meglio facendo un altro esempio.
Ammettiamo di avere una sub Prova e al suo interno c'è in ciclo do-loop

Public Sub Prova(ByVal i As Integer)
Do Until p >= 50000
   p = p + 1
   Form1.Label1(i).Caption = p
   DoEvents
Loop
End Sub

poi da form richiamo la sub prova passando 0, 1, ecc
IL PROBLEMA
se richiamo Prova 0 parte a contare ma se lancio Prova 1 si ferma Prova 0 e aspetta che finisce

PM Quote
Avatar
Reese (Ex-Member)
Pro


Messaggi: 179
Iscritto: 09/08/2006

Segnala al moderatore
Postato alle 17:25
Martedì, 03/04/2007
Cosa ti aspettavi?:) Non puoi richiedere la stessa funzione in contemporanea e farla andare due volte, Al massimo, usa un'altra funzione.

PM Quote
Avatar
Flyman (Normal User)
Rookie


Messaggi: 27
Iscritto: 03/04/2007

Segnala al moderatore
Postato alle 17:49
Martedì, 03/04/2007
Ho provato copiando la sub

Public Sub Prova1()
Do Until p >= 50000
p = p + 1
Form1.Label1(0).Caption = p
DoEvents
Loop
End Sub

Public Sub Prova2()
Do Until pp >= 50000
pp = pp + 1
Form1.Label1(1).Caption = pp
DoEvents
Loop
End Sub  

ma il risultato non cambia, quindi credo che sia per via del do - loop che rimane in attesa

PM Quote
Avatar
Reese (Ex-Member)
Pro


Messaggi: 179
Iscritto: 09/08/2006

Segnala al moderatore
Postato alle 12:28
Mercoledì, 04/04/2007
Hmm, si vede che il processore esegue solo un ciclo do-loop alla volta, nonostante il DoEvents.

PM Quote
Avatar
Hacker (Member)
Guru


Messaggi: 1014
Iscritto: 06/06/2006

Segnala al moderatore
Postato alle 12:35
Mercoledì, 04/04/2007
sì,secondo me in vb6 non si può fare...

PM Quote
Avatar
P4p3r0g4 (Member)
Guru


Messaggi: 1319
Iscritto: 29/12/2006

Segnala al moderatore
Postato alle 13:08
Mercoledì, 04/04/2007
se non ti interessa la velocità di esecuzione ma solo un'esecuzione parallela puoi usare due timer.
(altrimenti stringi tutto in un solo do loop ma con effetto sdoppiato)

PM Quote
Avatar
Flyman (Normal User)
Rookie


Messaggi: 27
Iscritto: 03/04/2007

Segnala al moderatore
Postato alle 14:53
Mercoledì, 04/04/2007
In realtà quello presentato era solo un esempio semplificato del problema.
Da varie prove ho visto il problema sta proprio nei cicli do-loop o for-next e usando timer il codice rallenta troppo.

PM Quote