Bonjour à tous,

j'utilise ce code pour télécharger des fichiers par Socket TCP depuis un server :

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
 FileInfo Infos = new FileInfo(FilePath);
                Name = Infos.Name;
                FileStream FileStream = File.Open(FilePath, FileMode.Open);
                BinaryReader Reader = new BinaryReader(FileStream);
                while (FileStream.Position < FileStream.Length)
                {
                    Byte[] Byte = null;
                    if (FileStream.Length - FileStream.Position >= 262144)
                        Byte = Reader.ReadBytes(262144);
                    else
                        Byte = Reader.ReadBytes((Int32)(FileStream.Length - FileStream.Position));
                    FileS Tr = new FileS(Name, FileStream.Position, FileStream.Length, Byte);
                    this.Enqueue(Packet.Serialize(new Packet(0, Commande, Tr)));
                    Tr = null;
                }
                Reader.Close();
                Reader.Dispose();
                FileStream.Close();
                FileStream.Dispose();
                Reader = null;
                FileStream = null;
                GC.Collect();
Le problème : malgré l'appel à GC.Collect(), quand je sort de la méthode j'ai toujours 1,6 go en mémoire d'utiliser alors que le fichier télécharger faisais 700 mo et qu'avant l'appel à cette méthode, la mémoire utilisée était constante et d'environ 20mo.

Savez d'où vient le problème ?

Merci d'avance,
NeoKript