¿Por qué tengo que deshacerme de una instancia de System.Net.Mail.MailMessage?

¿Qué recursos no administrados asigna que deben ser eliminados? ¿No es solo una simple serie de datos administrados? Entonces, ¿por qué deshacerse?

Un mensaje de correo tiene archivos adjuntos -> los archivos adjuntos son Flujos -> Los flujos se deben eliminar.

Aquí está el método Deshacer descomstackdo de MailMessage:

protected virtual void Dispose(bool disposing) { if (disposing && !this.disposed) { this.disposed = true; if (this.views != null) { this.views.Dispose(); } if (this.attachments != null) { this.attachments.Dispose(); } if (this.bodyView != null) { this.bodyView.Dispose(); } } } 

Como regla general, una clase debe implementar IDisposable si alguno de sus hijos contenidos lo implementa.

Un MailMessage puede tener archivos adjuntos, un archivo adjunto está representado por la parte MIME que contiene un Stream. Este flujo debe cerrarse, ya que podría contener un puntero no administrado a los datos subyacentes.