Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - C# Evitare che l'applicazione
Forum - C# / VB.NET - C# Evitare che l'applicazione "Non Risponda"

Avatar
TSP (Ex-Member)
Pro


Messaggi: 99
Iscritto: 17/03/2008

Segnala al moderatore
Postato alle 15:15
Martedì, 24/06/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:k:

PM
Avatar
punkettone90 (Member)
Expert


Messaggi: 279
Iscritto: 16/05/2007

Segnala al moderatore
Postato alle 21:00
Martedì, 24/06/2008
usa i thread

http://totem.altervista.org/guida/versione2/C8.php
http://totem.altervista.org/guida/versione2/C9.php

queste 2 pagine sono state scritte da Totem, moderatore di questa sezione del forum di Pierotofy

PM
Avatar
TSP (Ex-Member)
Pro


Messaggi: 99
Iscritto: 17/03/2008

Segnala al moderatore
Postato alle 0:08
Mercoledì, 25/06/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:k:

PM
Avatar
punkettone90 (Member)
Expert


Messaggi: 279
Iscritto: 16/05/2007

Segnala al moderatore
Postato alle 8:57
Mercoledì, 25/06/2008
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:

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 9:24
Mercoledì, 25/06/2008
Puoi anche usare un BackgroundWorker se vuoi. E' fondamentalmente la stessa cosa, ma questo ti permette, ad esempio, di cambiare il valore della progressbar.
http://totem.altervista.org/guida/versione2/C10.php

P.S.: http://www.dotnetspider.com/convert/Vb-To-Csharp.aspx Convertitore Vb.Net-C#

PM
Avatar
TSP (Ex-Member)
Pro


Messaggi: 99
Iscritto: 17/03/2008

Segnala al moderatore
Postato alle 14:02
Mercoledì, 25/06/2008
Ho deciso di usare il BGworker.

solo che non riesco a farlo andare:

in un pulsante:
Codice sorgente - presumibilmente C# / VB.NET

  1. private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
  2.         {
  3.             CopyDirectory(textBox1.Text, textBox2.Text);
  4.         }



Poi...

Codice sorgente - presumibilmente C# / VB.NET

  1. private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
  2.         {
  3.             BackgroundWorker worker = sender as BackgroundWorker;
  4.             e.Result = CopyDirectory(textBox1.Text, textBox2.Text);
  5.         }



Ma i files non vengono copiati...
HELP...

Ultima modifica effettuata da TSP il 25/06/2008 alle 14:02
PM
Avatar
TSP (Ex-Member)
Pro


Messaggi: 99
Iscritto: 17/03/2008

Segnala al moderatore
Postato alle 14:35
Mercoledì, 25/06/2008
Postato originariamente da TSP:

Ho deciso di usare il BGworker.

solo che non riesco a farlo andare:

Codice sorgente - presumibilmente C++

  1. private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             backgroundWorker1.RunWorkerAsync();
  4.         }
  5.  
  6.         private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
  7.         {
  8.             MessageBox.Show("");
  9.         }


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
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 9:38
Giovedì, 26/06/2008
Testo quotato

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

  1. private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
  2.         {
  3.             CopyDirectory(textBox1.Text, textBox2.Text);
  4.         }



Poi...

Codice sorgente - presumibilmente C# / VB.NET

  1. private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
  2.         {
  3.             BackgroundWorker worker = sender as BackgroundWorker;
  4.             e.Result = CopyDirectory(textBox1.Text, textBox2.Text);
  5.         }



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

  1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  2.   Dim S() As String = New String() {TextBox1.Text, TextBox2.Text}
  3.  
  4.   Wroker.RunWorkerAsync(S)
  5. End Sub
  6.  
  7. Private Sub Worker_DoWork(sender As Object, e As DoWorkEventArgs) Handles Worker.DoWork
  8.   CopyDirectory(e.Argument(0), e.Argument(1))
  9. End Sub


PM
Avatar
TSP (Ex-Member)
Pro


Messaggi: 99
Iscritto: 17/03/2008

Segnala al moderatore
Postato alle 19:56
Giovedì, 26/06/2008
si si loso ho gia fatto grazie per l'aiuto

PM