Lecture d'un gros fichier
Bonjour à tous,
J'essai tant bien que mal d'afficher une barre de progression pendant la lecture d'un fichier. J'utilise donc un thread avec des délégués pour définir la valeur maximum de la barre de progression, et afficher la progression pendant la lecture.
Le seul problème (qui peut paraître simple surement à vos yeux) et que je n'arrive pas à définir la valeur maximale de la barre de progression, j'ai soit des dépassement de capacité, soit une valeur trop grande...
Voici le code de mon thread :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
Dim lProcessedLength As Long = 0
Dim fileLength As Long = 0
Dim iProgressValue As Long = 0
Using fs As FileStream = File.Open("C:\fichier.iso", FileMode.Open, FileAccess.ReadWrite)
fileLength = fs.Length
Using bs As BufferedStream = New BufferedStream(fs)
Using sr As StreamReader = New StreamReader(bs)
Dim ligne As String = ""
ligne = sr.ReadLine
lProcessedLength += ligne.Length
iProgressValue = Convert.ToInt32((lProcessedLength / fileLength) * 100)
tdlg.ShowProgressPercent(iProgressValue)
While ligne IsNot Nothing
If cancel = True Then
Exit Sub
End If
lProcessedLength += ligne.Length
' get the percent of the file that we have completed...
iProgressValue = Convert.ToInt32((lProcessedLength / fileLength) * 100)
tdlg.ShowProgressPercent(iProgressValue)
ligne = sr.ReadLine
End While
sr.Close()
sr.Dispose()
End Using
bs.Close()
bs.Dispose()
End Using
fs.Close()
fs.Dispose()
End Using |
Dans ce code, j'ai directement mis la taille du fichier dans la mise à jour de la valeur maximale de la barre de progression (fichier de 4Go) Et le File.lentgh provoque un dépassement de capacité.
Pouvez vous m'aidez s'il vous plait ?
Merci à tous !