|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Nov 2007
Messaggi: 45
|
[C#] Attendere fine del backgroundWorker prima di proseguire con il resto
Salve a tutti,
avrei bissogno di un aiuto, in pratica io ho fatto la mia bella applicazione che gli dò una singola cartella e lui mi fà tutte le operazioni tranquillamente, adesso volevo fare una funzione che mi ripetesse quello che faccio per 1 singola cartella, per tutte le cartelle contenute in una root. A tale scopo avevo fatto la seguente funzione: Codice:
private void RepeatForAll()
{
string root = BkPath;
foreach (string SinglePath in Directory.GetDirectories(root))
{
//while (backgroundWorker1.IsBusy == true) { }
BkPath = SinglePath;
textBox1.Text = SinglePath;
button1.PerformClick();
}
Praticamente secondo la mia idea, aggiornavo semplicemente il path ed effettuavo quello che facevo prima con una singola cartella col button 1. Adesso il problema sta nel fatto che fra le mille e mille operazioni che poi richiamerà il button 1, c'è un BackgroundWorker che prima premendo solo button1 funzionava perfettamente, adesso probabilmente colpevole la velocità di esecuzione della premuta ripetuta di questo button1 il BackGroundWorker non riesce a completare le operazioni e conseguentemente tutto il programma mi và in errore. Ho provato con quello che vedete nel commento ma non risolve, ho messo dei treadh.sleep ma non funzionano neanche. Potete darmi una soluzione? Grazie a tutti P.S. intendo una soluzione modificando questo pezzetto di codice, penso che se aggiungo il ciclo for each all'interno del button1 includendo tutte le istruzioni del programma probabilmente non avrò lo stesso problema. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2005
Messaggi: 1400
|
per queste cose c'è sempre in aiuto la documentazione: http://msdn.microsoft.com/en-us/libr...undworker.aspx
Devi utilizzare l'evento RunWorkerCompleted |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Nov 2007
Messaggi: 45
|
Ok sono un pò confuso sull'utilizzo di questo evento RunWorkerCompleted, il mio dubbio pricnipale e su quali parametri gli devo passare
backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) quando richiamo nel corpo del programma questo evento, vuole inviato un sender e un RunWorkerCompletedEventArgs e. Ma nello specifico cosa significa esattamente, cosa dovrei passargli? |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Sep 2005
Messaggi: 1400
|
è un evento come gli altri. ti consiglio di leggerti qualche tutorial sulla gestione degli eventi, basta una rapida googlata e ti sarà tutto più chiaro
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:01.



















