Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Problema aggiornamento form
giovedì 01 aprile 2010 - 13.30
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
sarto76
Profilo
| Junior Member
102
messaggi | Data Invio:
gio 1 apr 2010 - 13:30
Ciao a tutti,
ho un form con alcuni controlli (3 ckeckbox, 1 picturebox, alcuni bottoni...), che creo a livello di design (non da codice).
Nel form load ho una procedura che mi carica diversi dati da DB (con un ciclo for), la quale può impiegare fino a 10 secondi.
Per non far sì di avere tutti i miei controlli senza alcun testo al loro interno (finchè non finisce la procedura sul database restano lì in "standby"), volevo far sì che mi apparisse un pannello che occupasse tutto lo spazio, con al suo interno una progress bar e un label (loading...). Appena finisce la procedura sul DB il pannello sparisce e mi appare il form sotto.
Il problema è che sul pannello creato la progressbar funziona (la faccio incrementare in base al ciclo for sul DB), ma il label non mi appare finchè la famosa procedura sul db (con il for) non termina. Spero di esere stato chiaro...
COme posso fare?
Grazie mille a tutti
Massimo
kataklisma
Profilo
| Senior Member
394
messaggi | Data Invio:
gio 1 apr 2010 - 13:35
Ciao!
La soluzione migliore è gestire il "loading" in un thread diverso.
Prova a dare un'occhiata alle mie risposte su questo thread :
http://www.dotnethell.it/Forum/messages.aspx?ThreadID=34945
e dimmi se risolvi o meno!
Ignazio Catanzaro
http://blogs.dotnethell.it/swdev/
sarto76
Profilo
| Junior Member
102
messaggi | Data Invio:
gio 1 apr 2010 - 14:01
Grazie mille del suggerimento...
ho provato, nel load faccio partire una thread che crea il pannello, ci mette il label e la progress bar,
ma quando dò questo comando this.Controls.Add(this.Pprogress);
mi dice che ho una chiamata cross-thread. Ho capito di cosa si tratta ma come lo risolvo? IO voglio che il pannello si posizioni davanti agli altri controlli che sta elaborando nel thread principale...
Grazie mille
ciao
kataklisma
Profilo
| Senior Member
394
messaggi | Data Invio:
gio 1 apr 2010 - 14:08
La chiamata è ovviamente cross thread in quanto non puoi chiamare un'oggetto da un thread diverso da quello che l'ha creato!
Dovresti creare una routine che modifichi il controllo, un delegate che punti ad essa e tramite il metodo Invoke del controllo far partire il delegate.
Ignazio Catanzaro
http://blogs.dotnethell.it/swdev/
Torna su
Stanze Forum
Elenco Threads
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 !