Oppure

Loading
15/05/09 19:47
Nitro
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:
Dim r As New IO.FileStream(txtpercorso.Text, IO.FileMode.Open)
Dim h As New IO.BinaryReader(r)
Dim w As New IO.FileStream(txtpercorso.text, IO.FileMode.CreateNew)
    For i As Double = 0 To r.Length - 1
        w.WriteByte(h.ReadByte)
    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:
Dim r As New IO.FileStream(txtpercorso.Text, IO.FileMode.Open)
Dim h As New IO.BinaryReader(r)
progresso.visible = True
progresso.Value = 0
progresso.Maximum = r.Length
Dim w As New IO.FileStream(txtpercorso.text, IO.FileMode.CreateNew)
    For i As Double = 0 To r.Length - 1
        w.WriteByte(h.ReadByte)
        progresso.value += 1
    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
aaa
15/05/09 20:20
theprogrammer
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??
aaa
16/05/09 12:08
Nitro
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
aaa
16/05/09 12:10
theprogrammer
Quando dividi in parti, opera per parti non per byte.
aaa