Voici le bloc simplifié de code:fuite de mémoire à l'aide System.Forms.Timer
private void timer1_Tick(object sender, EventArgs e)
{
using(Bitmap bmp = new Bitmap(48, 48))
{ }
}
Voici le bloc simplifié de code:fuite de mémoire à l'aide System.Forms.Timer
private void timer1_Tick(object sender, EventArgs e)
{
using(Bitmap bmp = new Bitmap(48, 48))
{ }
}
Parce qu'il ya peu d'informations sur la question, je réagis en termes généraux sur ce qui semble être la question .
Vous créez un petit Bitmap
sur chaque coche de temporisateur. Vous utilisez using
. Cela signifie que le code est enveloppé dans un bloc try/finally. Le bloc finally appellera bmp.Dispose()
, qui dispose du bitmap. Cependant, cela ne signifie pas que toutes les ressources gérées sont immédiatement nettoyées. Ceci est seulement nettoyé avec le prochain cycle de collecte de garbage, et ensuite, seulement quand aucune référence à l'image bitmap, ou aucune de ses références, n'existe.
Pour savoir si vous avez vraiment une fuite de mémoire, supprimez tout autre code et créez un projet simple avec juste le code ci-dessus et un peu de code d'initialisation. Placez-le sur un formulaire et ajoutez un bouton à ce formulaire. Lorsque vous cliquez sur le bouton, faites GC.Collect()
, ce qui effacera toutes les ressources gérées librement. Si cela ne nettoie pas vos ressources, vous avez une fuite de ressources et vous devez publier le code du projet minifié.
Remarque: si, à l'intérieur du bloc using
, vous utilisez d'autres ressources non gérées sans ajouter un nouveau bloc using
, ces dernières ne seront pas automatiquement supprimées. Envelopper un using
-bloc autour de chaque classe qui expose IDiposable
.
Génial. Il serait utile si vous publiez du code plus, et une explication de la raison pour laquelle vous pensez que le gestionnaire d'événements provoque la fuite de mémoire. – slugster
Quelle est la vraie question? Voulez-vous imiter une fuite de mémoire, ou voulez-vous l'empêcher? – Abel
Êtes-vous nettoyer le minuteur? :) (désolé, ne pouvait pas résister). –