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
Query blocca l'applicazione
martedì 11 aprile 2006 - 17.18
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Juwan
Profilo
| Junior Member
76
messaggi | Data Invio:
mar 11 apr 2006 - 17:18
Salve ragazzi, ho un'applicazione che esegue una query molto grande ad un db, per informare l'utente che si stanno caricando i dati del db, ho inserito nel form una progressBar, che informa sullo stato dell'operazione, però il problema è che questa query, blocca per alcuni instanti l'applicazione, il form, e di conseguenza anche la progressBar1, in seguito torna tutto funzionante, ma solo quando l'operazione è stata eseguita completamente. Quindi l'utente non viene più informato dello stato dell'applicazione, e può credere che essa sia bloccata, quando invece in realtà sta solo eseguendo la query. Come posso risolvere il problema del blocco del programma?
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
mar 11 apr 2006 - 17:24
devi utilizzare i thread per gestire + oggetti ed operazioni contemporaneamente
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
alato
Profilo
| Newbie
2
messaggi | Data Invio:
mar 11 apr 2006 - 18:02
faresti un esempio di codice concorrente? sarebbe alquanto utile...
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
mar 11 apr 2006 - 18:14
se mi posti il progettino te lo modifico in base ciò che ti serve, ovviamente anche il db..
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
Juwan
Profilo
| Junior Member
76
messaggi | Data Invio:
mar 11 apr 2006 - 18:43
Ok però il metodo che deve essere chiamato da un altro thread, devo mano mano avere un paramentro diverso, per così poter aumentare la progressBar, come faccio a chiamare il metodo dello stesso thread, più volte?
Cmq questo è la parte di codice incriminata
progressBar.Value = 10;
metodo_query_db();
progressBar.Value = 50;
metodo2_query_db();
progressBar.Value = 100;
MessageBox.Show("Caricamento dei contenuti, effettuato", "Operazione eseguita con successo", MessageBoxButtons.OK, MessageBoxIcon.Information);
progressBar.Visible = false;
Juwan
Profilo
| Junior Member
76
messaggi | Data Invio:
mer 12 apr 2006 - 15:35
Mi hanno consigliato di usare il controllo
BackgroundWorker, però mi da problemi nella chiusura del thread,
perchè mi dice che lo stato del backgroundworker, non supporta la
cancellazione. Posto qui il codice per farmi capire meglio.
backgroundWorker1.RunWorkerAsync(progressBar1.Value =
10);
backgroundWorker1.CancelAsync();
chiamata_primo_metodo()
backgroundWorker1.RunWorkerAsync(progressBar1.Value =
50);
backgroundWorker1.CancelAsync();
chiamata_secondo_metodo()
backgroundWorker1.RunWorkerAsync(progressBar1.Value =
100);
backgroundWorker1.CancelAsync();
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
mer 12 apr 2006 - 16:21
dal codice che hai postato ti esegue tutto ma la toolbar non si vede muoversi, giusto?
intanto che io controllo togli il codice che si trova nelle sub_routine e inseriscilo direttamente nel codice delle progress e prova...cmq sarebbe meglio utilizzare il metodo invoke per i thread, te utilizzi vs 2003 o 2005?per sapere su qualche compilatore scrivere il codice e provare...
Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
Juwan
Profilo
| Junior Member
76
messaggi | Data Invio:
mer 12 apr 2006 - 16:24
No, il problema è che che la progressbar si muove, ma viene segnalato un errore sul CancelAsync, mi dice che lo stato del backgroundworker, non supporta la cancellazione. Cmq sto usando la visual studio 2005
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
mer 12 apr 2006 - 16:57
perchè devi utilizzare il backgroundWorker?
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
Juwan
Profilo
| Junior Member
76
messaggi | Data Invio:
mer 12 apr 2006 - 17:01
Perchè mi avevano consigliato quel controllo per gestire più thread, tu invece cosa mi consigli, per risolvere il mio problema?
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
mer 12 apr 2006 - 19:54
Tu puoi gestire quanti thread vuoi ma per gestire gli oggetti all'interno dei thread devi utilizzare l'accesso multithread e devono essere di tipo thread Safe..
leggi qui:
http://msdn2.microsoft.com/en-us/library/ms171728.aspx
Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
Juwan
Profilo
| Junior Member
76
messaggi | Data Invio:
gio 13 apr 2006 - 16:41
Io però tramite quest'altro thread, devo poter gestire l'avanzamento della progressBar, e siccome tale controllo viene creato da un altro thread, viene segnalato errore :-(
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
gio 13 apr 2006 - 20:36
se puoi perchè non mi posti il progetto e te lo controllo? Dovrei esaminarlo per vedere dove nasce l'errore
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
Juwan
Profilo
| Junior Member
76
messaggi | Data Invio:
gio 13 apr 2006 - 21:53
Ti ringrazio molto della tua grande disponibilità, domani mattima ti manderò il progetto, a quale indirizzo email posso mandartelo?
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
ven 14 apr 2006 - 13:32
Fabio@wondernet.biz
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
ven 14 apr 2006 - 22:52
Pensavo che fosse codice vb net perché scrivo sotto con il linguaggio vb, comunque non potrei ugualmente fare una prova perché avrei bisogno dell'intero progetto e gestire i processi con il Debug e vedere dove nasce il blocco, comunque ti consiglio di inserire la gestione dell'avanzamento della Progressbar nelle rispettive Routine Metodo1 e Metodo2 e non richiamare il processo dall'esterno. Prova così, mi spiace tantissimo che alla fine non ti posso essere di grande aiuto.
Ciao e buon lavoro
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
Juwan
Profilo
| Junior Member
76
messaggi | Data Invio:
sab 15 apr 2006 - 20:33
Ti ringrazio lo stesso per il tuo aiuto, comunque se metto l'avanzamento della progress bar dove dici tu, non penso che il problema venga risolto, perchè fanno sempre parte dello stesso thread. Invece per quanto riguarda il codice, se usi SharpDevelop, hai la possibilità di convertire codice C# in vb net e viceversa
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
dom 16 apr 2006 - 15:54
Dove posso trovar elo sharpdevelp?
Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
Juwan
Profilo
| Junior Member
76
messaggi | Data Invio:
dom 16 apr 2006 - 17:57
A questo indirizzo
http://www.icsharpcode.net/OpenSource/SD/
Ovviamente SharpDevelop oltre ad avere la possibilità di convertire il codice, è da considerarsi un vero e proprio ambiente di sviluppo free per il dot net, non ha ancora tutte le funzionalità della visual studio, ma è comunque un buon ambiente
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 !