Progressbar per livello caricamento xml

martedì 13 novembre 2012 - 22.38
Tag Elenco Tags  VB.NET

willy_80 Profilo | Senior Member

ciao a tutti ho fatto un programma in vb2010 che gestisce grandi quantità di dati attraverso dei dataset e li salvo poi in formato xml.
Il caricamento degli xml lo faccio in background, risulta essere un po lungo ma funziona senza problemi, vorrei solo visualizzare una barra che indichi la percentuale caricata.

Qualcuno mi sa dire come faccio a leggere il valore da visualizzare????

grazie

ridaria Profilo | Expert

>ciao a tutti ho fatto un programma in vb2010 che gestisce grandi
>quantità di dati attraverso dei dataset e li salvo poi in formato
>xml.
>Il caricamento degli xml lo faccio in background, risulta essere
in background intendi con un BackgroundWorker.

La classe BackgroundWorker ha un evento: ProgressChanged che viene scatenato e con esso puoi inviare la percentuale di completamento alla progress Bar.

Qui un esempio abbastanza confacente alle tue esigenze:
http://www.dreamincode.net/forums/topic/88605-the-background-worker/

Però perdonami, forse ho capito male io:
dal momento che lo fai in background, e quindi vuoi che il sistema esegua questo lavoro mentre si possono avviare altri thread, mi sembra superfluo tenere il controllo sullo stato di avanzamento dell'acquisizione dei dati, magari avere un alert alla fine.
CMQ se vuoi fare così ci sarà una valida ragione :-)

CIAO


Riccardo D'Aria

willy_80 Profilo | Senior Member

ciao, si il caricamento viene fatto all'interno del backgroundworker e normalmente uso il progresschange per visualizzare lo stato di avanzamento del processo.
forse mi sono spiegato male io....
ci riprovo.
Per procedere con le operazioni di elaborazione dati devo prima caricare i dati quindi l'operatore deve per forza attendere la fine di questo processo che a volte risulta essere lungo a causa dell'enorme mole di dati in questione, quindi vorrei visualizzare una barra che indica lo stato di tale processo ma non so dove andare a pescare il valore da passare alla barra visto che per caricare i dati nel dataset uso questa funzione:

Public Function My_LoadFile(ByVal FileDrwName as string) On Error GoTo Errore Dim CR As Boolean = True 'Reset dei valori Ds_Dati.Reset() '=============== 'Lettura del dataset Ds_Dati.ReadXml(FileDrwName) '====================== GoTo Uscita Errore: MsgBox(Err.Description & " My_LoadFile") CR = False Uscita: Return CR End Function

ridaria Profilo | Expert

????


non mi sembra sia un backroundWorker questo qui


o sono io che do i numeri?
Riccardo D'Aria

Vinsent Profilo | Senior Member

>????
>
>
>non mi sembra sia un backroundWorker questo qui
>
>
>o sono io che do i numeri?
>Riccardo D'Aria

Neanche a me....tranne qualche "giro" particolare...
Inoltre 'On Error GoTo' ecc. non è .NET ma VB6, sono funzioni mantenute per retro compatibilità. Il modo "corretto" sarebbe quello di usare try/catch, sempre se si stà parlando di VB.NET.
Ritornando al backroundWorker, il progresso non è funzionale sulla lettura del singolo file perchè deve essere legato ad un processo "numerabile" come un ciclo For. Quindi, se i file sono molti e vengono caricati con un ciclo ha senso usare la progressbar, ovviamente si mostra il numero dei file caricati e non la percentuale di caricamento del singolo file...mentre se il file è uno si può usare una gif animata e una label con il classico "Lettura dati in corso..." e i puntini che vanno e vengono.......ed alla fine l' alert che avvisa del completamento.
Ciao!

willy_80 Profilo | Senior Member

In effetti quella che ho postato è una funzione che uso coi file più piccoli, non ho postato direttamente il bgw perchè molto più intricato da leggere visto che fa altri controlli e settaggi, scusate se non l'ho specificato, comunque se non si può leggere lo stato di avanzamento del "ReadXml" metterò una gif animata, vi ringrazio dell'interessamento.

Per quanto riguarda il discorso del "On Error GoTo" so benissimo che è obsoleto ma lo uso sempre quando possibile al posto del "Try" perchè più pratico e veloce, mi è capitato in alcuni casi di usare il "Try" su operazioni ricorsive su cicli un po lunghetti e ho notato che i processi sono parecchio più lenti....

ridaria Profilo | Expert

... scusami, ma se ci chiedi di valutare un argomento, poi ci passi blocchi di codice diversi, poi ci dici che era intenzionale .....

mhà ..........

e poi se ti sta bene la risposta di vinsent che ti ha detto che non è molto fattibile la cosa, allora ACCETTAGLI la risposta almeno e chiudi il post.

In particolare visto che è codice vb 6 posta nella giusta stanza.


Ciao
Riccardo D'Aria

willy_80 Profilo | Senior Member

non è vb6 On Error lo uso in vb2010

ridaria Profilo | Expert

fai come vuoi,
Riccardo D'Aria
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5