2012-09-27 5 views
1

Je suis en train de développer un EmailService pour lire les nouveaux mails de la table des Emails (Sql). Ceci est un service Windows écrit en C# et .NET 4.0. Chaque enregistrement d'email a une taille de corps de courrier mesurée est environ 12kb ... après l'envoi de chaque email mon service appelle la méthode MailMessage.Disposed() et placez SmtpClient à null. Mais la mémoire de mon Service ne cesse de croître et de ne pas revenir au Service démarré (prend environ 7 Mo de mémoire système) même si aucun nouvel e-mail n'est lu. Il consumses souvent 70Mo - mémoire système de 120MB et c'est tellement bizarre :(System.Net.Mail.MailMessage ne publie pas memeory après l'envoi

Avez-vous une solution pour diminuer la mémoire pour mon cas ci-dessus

Merci et meilleures salutations,

+0

Etes-vous sûr que ce problème n'est pas ailleurs? Commentez le code qui envoie les messages et voyez s'il fuit toujours. Ou, mieux encore, utilisez un profileur memroy. – SLaks

+0

J'ai utilisé le profileur de mémoire ANTS pour suivre la mémoire et notez que la cause de l'augmentation de la mémoire est que MailMessage ne dispose pas ... quand je n'ai pas appelé la méthode sendMail. J'ai supposé lire 100 000 nouveaux mails et tout allait bien. Donc, je parie que le MailMessage est un problème –

Répondre

0

J'ai? vu ceci avant, où les ressources du système ne sont pas réellement libérés jusqu'à ce que le .exe a été fermé (retour dans les 2,0 jours avec des windows Forms programmation)

+0

Ce n'est pas une réponse utile, d'autant plus que WinForms n'a rien à voir avec System.Net.Mail. – SLaks

0

Vous devez utiliser using pour le SmtpClient et les objets MailMessage:.

using(SmtpClient client = new SmtpClient("ipaddress")){ 
using(MailMessage message = new MailMessage()){ 

//Do something to fill the message... 

client.Send(message); 

} 

} 
Questions connexes