Bonjour,

Voil� je d�veloppe actuellement une application de type VNC, avec affichage d'�cran � distance. J'avais d�j� un probl�me au niveau de la gestion m�moire serveur, mais maintenant c'est au niveau du client (celui qui affiche les images � distance) o� la taille du processus en m�moire augmente constamment.

Donc en fait mes images sont envoy�es d'un Composant StreamServer vers un StreamClient (NMStrm) . Quand celui-ci re�oit des donn�es on execute ce code :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
Affichage *thread_affiche = new Affichage(false,strm);
delete strm,thread_affiche;
Donc en fait j'ai modifi� le constructeur du thread afin de passer en param�tre le flux entrant. Et voici le code du thread en lui m�me :

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
TMemoryStream *flux;
 
 
 
__fastcall Affichage::Affichage(bool CreateSuspended,TStream *strm)
        : TThread(CreateSuspended)
{
FreeOnTerminate=true;
flux = new TMemoryStream();
flux->LoadFromStream(strm);
delete strm;
 
}
 
__fastcall Affichage::Affichage(bool CreateSuspended)
        : TThread(CreateSuspended)
{
}
 
 
void __fastcall Affichage::Execute()
 
{
TJPEGImage *affiche = new TJPEGImage();
affiche->LoadFromStream(flux);
delete flux;
Form12->PaintBox1->Canvas->Draw(0,0,affiche);
delete affiche;
Terminate();
 
}
Donc en fait le flux rentrant est charg� dans un objet de type JPG et ensuite affich� dans un Paintbox. je pense avoir bien lib�r� la m�moire a chaque �tape quelqu'un aurait donc t-il une solution svp ? Merci d'avance !!