On_Paint, brush pen.Dispose() ? [C#] - C#/.NET managed - Programmation
Marsh Posté le 29-11-2005 à 18:49:12
Les objets Pen, Brush, etc... reposent sur GDI+, qui n'est pas une technologie managée. Malgré tout, le fonctionnement du CLR t'assure que le Garbage Collector fera son boulot dés que ces objets seront hors de portée, en théorie tu n'as donc pas besoin d'appeler Dispose(). Néanmoins, comme il s'agit d'opérations graphiques, donc nécessitant un traitement rapide, appeler Dispose() explicitement sera beaucoup plus rapide que l'attente du GC. Ca te permettra de libérer toutes les ressources non managées, et ceci de manière beaucoup plus efficace et rapide.
Marsh Posté le 29-11-2005 à 19:10:19
Mais vaut-il mieux creer ces objets à chaque appel de ma fonction ou de les déclarer une fois pour toute comme membres privés de ma classe ?
Car allouer les objets et les detruire à chaque fois ca doit prendre du temps d'execution, non ?
Marsh Posté le 29-11-2005 à 20:15:52
Bah, tu peux faire comme tu veux, ça dépend si tu utilises beaucoup d'objets GDI+ ou pas. Si tu en as peu, je pense que le mieux est de les créer dans le OnPaint, sinon effectivement, tu peux les déclarer comme membres de classe.
Marsh Posté le 29-11-2005 à 16:15:41
Bonjour,
Sur tous les exemples que je trouve sur le net, (y compris ceux de Microsoft)
dans les events OnPaint des controles, ils declarent leur Pen et leurs Brush, et les disposent a la fin.
Quel est l'interet de faire ça ?
Ne pourrait-on pas sortir la définition des Pen, Brush et autre et les mettre en variable privée à la classe. Ca eviterait de faire les dispose à chaque appel de la fonction.
Si ils font ça, il doit y avoir une raison, non ?
fluminis
---------------
http://poemes.iceteapeche.com - http://www.simuland.net