Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
24/06/08 13:15
TSP
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:k:
aaa
24/06/08 19:00
punkettone90
usa i thread

totem.altervista.org/guida/versione2/…
totem.altervista.org/guida/versione2/…

queste 2 pagine sono state scritte da Totem, moderatore di questa sezione del forum di Pierotofy
aaa
24/06/08 22:08
TSP
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:k:
aaa
25/06/08 6:57
punkettone90
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 :k:
aaa
25/06/08 7:24
Il Totem
Puoi anche usare un BackgroundWorker se vuoi. E' fondamentalmente la stessa cosa, ma questo ti permette, ad esempio, di cambiare il valore della progressbar.
totem.altervista.org/guida/versione2/…

P.S.: dotnetspider.com/convert/… Convertitore Vb.Net-C#
aaa
25/06/08 12:02
TSP
Ho deciso di usare il BGworker.

solo che non riesco a farlo andare:

in un pulsante:
  private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            CopyDirectory(textBox1.Text, textBox2.Text);
        }


Poi...

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 25/06/08 12:02
aaa
25/06/08 12:35
TSP
Postato originariamente da TSP:

Ho deciso di usare il BGworker.

solo che non riesco a farlo andare:

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 25/06/08 12:38
aaa
26/06/08 7:38
Il Totem
Postato originariamente da TSP:

Ho deciso di usare il BGworker.

solo che non riesco a farlo andare:

in un pulsante:
  private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            CopyDirectory(textBox1.Text, textBox2.Text);
        }


Poi...

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.
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
aaa