Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Esecuzioni in background ... o "saga del multitasking"

Ciao a tutti e buon venerdi !! (finalmente l'ultimo giorno della settimana)
Dunque dunque...si é fatto tanto parlare del fatto che win98 lavora in
multitasking, che questo problema mi ha fatto pensare...
Ho fatto un programmino che legge dei dati da un file Ascii , linea per
linea, analizza la linea e quindi separa i vari campi. Dopodiché salva campo
per campo su un database in formato Access. (metodi .addnew e .update)
Questa operazione impiega molto tempo, perché i dati sono molti (circa
5000), e quindi il computer si blocca fino alla fine dell'esecuzione del
ciclo. Anche un orologio che avevo messo sul form si ferma.
Domanda : é possibile far fare tutto questo popo' di roba indipendentemente
dal resto ? cioe' che io posso continuare a usare il resto del programma
mentre questo si macina tutti i dati ? (credo che questo significhi
"multitasking", aaaahh...caro vecchio Amiga2000)
Ah dimenticavo : uso VisualBasic6 su piattaforma Windows98
Ciao e grazie per aver letto il mio messaggio
DaVe
--
Leave [KILL SPAM] from adress.

"multitasking", aaaahh...caro vecchio Amiga2000)
Nel tuo ciclo devi dare un attimo di "respiro" a Windows di tanto in tanto;
guarda sulla guida l'istruzione 'DoEvents'
Prova ad inserirlo alla fine di ogni iterazione, vedrai che il sistema
diventera' molto piu' risposivo ma, per contro, il tuo programma rallentera'
sensibilmente; il giusto compromesso e' eseguirlo solo ogni tot iterazioni, ad
esempio:
For i=1 to 5000
    [...]
    'rilasciamo il controllo a Windows ogni 100 iterazioni
    If i Mod 100 = 0 Then
        DoEvents
    End If
Next
il "tot" dovrai sceglierlo di volta in volta a seconda dei casi.
Ciao
--
Luca Dormio
l...@sig-la.com
ldo...@tin.it


Hai già messo un DoEvents durante i vari cicli di lettura ed elaborazione
dei dati?
Ciao


Si si !! Infatti pensavo se si poteva evitare questo, in quanto se metto dei
doevents mi ritorna si il controllo sull'applicazione, ma il tempo di
elaborazione dei dati aumenta...
Dovrei poter lavorare con l'applicazione mentre lui elabora, ma con i
doevents mi blocca l'esecuzione del salvataggio finche' non ho finito le
altre cose...
Mmmhh...mi sa che non si puo' avere tutto eh ?
Grazie lo stesso e buon weekend !
DaVe

 



Per continuare ad usare il programma devi creare un EXE ActiveX dove creerai
una classe con un metodo che fara partire la lettura del file in maniera
autonoma(Multithreading).
Se vuoi degli esempi postami.
Ciao

 Se vuoi degli esempi postami.
Oddio no... gia' da come me lo hai descritto mi terrorizza !! :-)
Chissa' il codice..
Grazie lo stesso !
Ciao, DaVe

Accidenti che multitask.. sul, mio A2000 come Dave urka che era multitask...
questo da paura... infatti anche io ho qualche problema durante degli
accessi a disco e DOEVENTS... non e' che dia respiro bensi' permette di far
partire qualche cosa d'altro finchè non viene liberato quel qualche cosa
d'altro... ma mi sembra na cavolatainm alcuni casi mentr e in altri
necessario ma okkio!!!!
Se apro due form in exe sono totalmente indipendenti...
Alcuni accessi soprattutto se sfrutto le sql e/o qualche altro parametro di
lettura soprattutto disco DAO ADO ecc..., il doevents diventa anche
pericoloso, perche' permette di eseguire delle operazioni ulteriori e le
rallenta a scapito di altre che potrebbero necessitare della prima... un
casino pazzesco se dal doevents ricerchi dei dati da quel ciclo, soprattutto
di fine e se mett9o ancora un for to next rallento anche il programma
ulteriormente... io ho dai 20'000 ai 30'000 dati! quindi okkio al doevents!
ciao
 Frank


 wrote in message
7rbc4c$ip6$1...@news.swissonline.ch...
