Aggiornamento progressbar in multithread vb .net

venerdì 30 maggio 2008 - 13.45

Ervis Profilo | Newbie

ciao a tutti,
ho provato a cercare sia su questo forum che su altri che trovo nel web ma no ho trovato proprio quello che volevo:

il mio problema sta nell'aggiornare una progressbar, nel form principale della mia applicazione in VB .NET (utilizzo Visual Studio 2005, OS Win XP), mentre eseguo una query in un altro thread.
In pratica io so quanti record devo leggere (memorizzo il valore in una variabile intera, TotRecords) e con un ciclo while aumento il contatore ( i as integer) fino a raggiungere il numero di record totali, TotRecors.

vorrei riuscire ad aggiornare la progressbar al valore del contatore i in modo da vedere sul mio form principale la progressbar scorrere e successivamente magari anche una label che riporta il valore del contatore i.

spero che vi sia già capitato un preblema simile e soprattutto che lo abbiate risolto
grazie in anticipo

Brainkiller Profilo | Guru

>il mio problema sta nell'aggiornare una progressbar, nel form
>principale della mia applicazione in VB .NET (utilizzo Visual
>Studio 2005, OS Win XP), mentre eseguo una query in un altro
>thread.

Io ti consiglio di utilizzare il componente BackgroundWorker che consente di fare quello che dici tu.
Qui c'è la documentazione:
http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx

e c'è proprio un esempio in cui viene avviata un'operazione gravosa in termini di cicli CPU usati (il calcolo dei numeri di fibonacci) e mentre viene eseguita viene aggiornata una progressbar.

Copia e incolla e adatta in base alle tue necessità.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Ervis Profilo | Newbie

ciao e grazie per la risposta,

conoscevo vagamente le funzionalità del BackgroundWorker ma ho sempre optato per l'utilizzo dei delegate comunque provando ad utilizzare il BackgrounWorker da te consigliato, il mio problema non sono riuscito a risolverlo per il semplice fatto che (almeno penso) io tentavo di aumentare il valore della progressbar con un ciclo troppo frequente dove tramite un delegato la mia procedura non aveva abbastaza tempo per aggiornare la progressbar che gli arrivava già il valore successivo da aggiornare.

facendo così sul mio form sembrava che l'applicazione fosse bloccata fino al termine della procedura che poi mi compariva l'ultimo aggiornamento.

grazie ancora
ciao
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5