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 :
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é.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Pouvez vous m'aidez s'il vous plait ?
Merci à tous !
Partager