PDA

View Full Version : [C#] Il programma omette certe istruzioni


pare93
05-01-2011, 12:09
Salve a tutti,
stò creando un' applicazione in C# che consenta di ricercare una file nel computer utilizzando un metodo ricorsivo.
Vi riporto il pezzo di algoritmo che mi dà problemi:

bool trovato = false; // Utilizzata per vedere se è stato trovato il file
Application.UseWaitCursor = true;
btnAvvia.Text = "Ricerca in corso ...";
RicercaFile.CercaFile(string nomeFile, string path, ref bool trovato); // Libreria contenente metodi per la ricerca del file


Ecco avviando il programma step by step passa le istruzioni del cursore e del bottone ma non visualizza nulla, anzi inizia con la ricerca del file.
Viene visualizzato il cursore il caricamento e viene cambiato il testo del bottone dopo che la ricerca è stata completata.
Spero di essere stato chiaro.
Grazie in anticipo :)

Kralizek
05-01-2011, 14:06
non dai il tempo all'applicazione di gestire l'update grafico.

dai un'occhiata qui: http://msdn.microsoft.com/en-us/library/system.windows.forms.application.doevents.aspx

pare93
05-01-2011, 14:33
Si, è proprio quello che ho provato a fare io.
Ho provato a fermare l' applicazione per 10 secondi con System.Theading.thread.sleep(10000) ma non succede nulla.
Anzi l' applicazione aspetta 10 secondi e poi avvia la ricerca del file eseguendo le istruzioni che ho detto precedentemente alla fine.

tomminno
05-01-2011, 15:39
Si, è proprio quello che ho provato a fare io.
Ho provato a fermare l' applicazione per 10 secondi con System.Theading.thread.sleep(10000) ma non succede nulla.
Anzi l' applicazione aspetta 10 secondi e poi avvia la ricerca del file eseguendo le istruzioni che ho detto precedentemente alla fine.

Ma se metti lo sleep nell'interfaccia blocchi l'interfaccia per la durata dello sleep

pare93
05-01-2011, 17:19
Sai dove devo metterlo allora?
Scusa la mia ignoranza ;)

pare93
08-01-2011, 11:17
up

tomminno
08-01-2011, 13:02
Usa un BackgroundWorker o la libreria TPL se usi il framework 4.