TSP (Ex-Member)
Pro
Messaggi: 99
Iscritto: 17/03/2008
|
Questo topic è stato chiuso dal moderatore Ho creato un programmino di sincronizzazione cartelle se i files sono molto grandi e il tempo di copia è lungo il programma non risponde come posso ovviare a questo inconveniente?
grazie in anticipo per eventuali soluzioni
|
|
punkettone90 (Member)
Expert
Messaggi: 279
Iscritto: 16/05/2007
|
|
|
TSP (Ex-Member)
Pro
Messaggi: 99
Iscritto: 17/03/2008
|
scusa tanto ma credo di non avere capito molto bene, sono al principio del mio percorso di C# potrei avere una spiegazione magari un po piu semplice, grazie tante per l'aiuto
|
|
punkettone90 (Member)
Expert
Messaggi: 279
Iscritto: 16/05/2007
|
sinceramente mi sembrano abbastanza chiare, comunque i thread (classe di System.Threading) servono per creare dei sottoprocessi all'interno dell'applicazione, quindi un sottoprocesso si incarica di fare il lavoro di trasferimento dei file e così il processo principale (quello dell'applicazione) è libero di rispondere al sistema
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
|
|
TSP (Ex-Member)
Pro
Messaggi: 99
Iscritto: 17/03/2008
|
Ho deciso di usare il BGworker.
solo che non riesco a farlo andare:
in un pulsante:
Codice sorgente - presumibilmente C# / VB.NET |
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
CopyDirectory(textBox1.Text, textBox2.Text);
}
|
Poi...
Codice sorgente - presumibilmente C# / VB.NET |
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
e.Result = CopyDirectory(textBox1.Text, textBox2.Text);
}
|
Ma i files non vengono copiati...
HELP... Ultima modifica effettuata da TSP il 25/06/2008 alle 14:02 |
|
TSP (Ex-Member)
Pro
Messaggi: 99
Iscritto: 17/03/2008
|
Postato originariamente da TSP:
Ho deciso di usare il BGworker.
solo che non riesco a farlo andare:
Codice sorgente - presumibilmente C++ |
private void button1_Click(object sender, EventArgs e) { backgroundWorker1.RunWorkerAsync(); } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { MessageBox.Show(""); }
|
il messaggio non viene mostrato, pero se creo un nuovo progetto il messaggio viene mostrato...
HELP...
nella form principale però va...
(scusate, ho cliccato quote invece di edit )
Ultima modifica effettuata da TSP il 25/06/2008 alle 14:38 |
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Postato originariamente da TSP:
Ho deciso di usare il BGworker.
solo che non riesco a farlo andare:
in un pulsante:
Codice sorgente - presumibilmente C# / VB.NET |
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
CopyDirectory(textBox1.Text, textBox2.Text);
}
|
Poi...
Codice sorgente - presumibilmente C# / VB.NET |
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
e.Result = CopyDirectory(textBox1.Text, textBox2.Text);
}
|
Ma i files non vengono copiati...
HELP... |
Dovrebbe darti errore. Non puoi richiamare TextBox1 e TextBox2 all'interno di backgroundwroker, perchè esse sono state create in un thread differente rispetto a quello in cui agisce il worker. Devi passare il loro contenuto come argomento a RunWorkerAsync, e poi riprenderle da e.Argument.
Codice sorgente - presumibilmente VB.NET |
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim S() As String = New String() {TextBox1.Text, TextBox2.Text} Wroker.RunWorkerAsync(S) End Sub Private Sub Worker_DoWork(sender As Object, e As DoWorkEventArgs) Handles Worker.DoWork CopyDirectory(e.Argument(0), e.Argument(1)) End Sub
|
|
|
TSP (Ex-Member)
Pro
Messaggi: 99
Iscritto: 17/03/2008
|
si si loso ho gia fatto grazie per l'aiuto
|
|