Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - ProgressBar rallenta la copia
Forum - C# / VB.NET - ProgressBar rallenta la copia

Avatar
Nitro (Member)
Pro


Messaggi: 72
Iscritto: 17/10/2007

Segnala al moderatore
Postato alle 21:47
Venerdì, 15/05/2009
Ciao a tutti,
una funzione del mio programma è quella di leggere un byte da un file e scrivere questo stesso byte in un altro file creato. Il codice sono riuscito a scriverlo è funziona tutto per bene, questo è il codice:
Codice sorgente - presumibilmente VB.NET

  1. Dim r As New IO.FileStream(txtpercorso.Text, IO.FileMode.Open)
  2. Dim h As New IO.BinaryReader(r)
  3. Dim w As New IO.FileStream(txtpercorso.text, IO.FileMode.CreateNew)
  4.     For i As Double = 0 To r.Length - 1
  5.         w.WriteByte(h.ReadByte)
  6.     Next


Volendo potrei utilizzare questo codice però quando questo è in esecuzione giustamente il programma sembra bloccato e l'utente non sa a che punto è la copia, se la copia si sta facendo o il prog e in tilt, quindi per i file grandi è molto seccante. A questo punto ho deciso di aggiungere nella barra di tasto del prog una progressbar(progresso) non visibile andando ad aggiungere il codice per controllarla:
Codice sorgente - presumibilmente VB.NET

  1. Dim r As New IO.FileStream(txtpercorso.Text, IO.FileMode.Open)
  2. Dim h As New IO.BinaryReader(r)
  3. progresso.visible = True
  4. progresso.Value = 0
  5. progresso.Maximum = r.Length
  6. Dim w As New IO.FileStream(txtpercorso.text, IO.FileMode.CreateNew)
  7.     For i As Double = 0 To r.Length - 1
  8.         w.WriteByte(h.ReadByte)
  9.         progresso.value += 1
  10.     Next


Questo nuovo codice però mi rallenta di molto la copia, vi parlo di 1 MB copiati in poco meno di un minuto e non riesco a capire perchè rallenta così tanto.
Mi potete aiutare please???
Grazie anticipate

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 22:20
Venerdì, 15/05/2009
Beh, molto probabilmente e' una cosa normale ... se chiami un milione di volte la proprietà della Progressbar, ci credo che rallenta ...

Ma il punto non e' questo, piuttosto PERCHE' copi un byte alla volta??

PM Quote
Avatar
Nitro (Member)
Pro


Messaggi: 72
Iscritto: 17/10/2007

Segnala al moderatore
Postato alle 14:08
Sabato, 16/05/2009
Perchè il programma ha anche le funzione di dividere il file in più parti e sinceramente ho trovato questa soluzione ottima. Però se cè un altro metodo che conosci sarei felice di ascoltarti. Grazie

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 14:10
Sabato, 16/05/2009
Quando dividi in parti, opera per parti non per byte.

PM Quote