Bonjour à tous,
j'utilise ce code pour télécharger des fichiers par Socket TCP depuis un server :
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.
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();
Savez d'où vient le problème ?
Merci d'avance,
NeoKript
Partager