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 : 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
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 !