Entsorgen Sie SmtpClient in SendComplete?

9

Wenn ich SmtpClients SendAsync zum Senden von E-Mails verwende, wie kann ich die smtpclient -Instanz korrekt entsorgen?

Sagen wir:

%Vor%

In der Methode SendAsyncCallback sollte ich sc.Dispose() oder mail.Dispose() ?

aufrufen

Ich habe das MSDN-Dokument überprüft, ein Beispiel ruft MailMessage.Dispose () auf, aber wird diese dispose-Methode auch die SmtpClient -Instanz?

Vielen Dank.

    
Jeff Chen 14.04.2011, 08:14
quelle

2 Antworten

4

Sie sollten sowohl die MailMessage als auch die SmtpClient in SendAsyncCallback ablegen.

Durch die Bereitstellung von MailMessage wird der SmtpClient nicht automatisch entfernt (weil Sie möglicherweise zwei Nachrichten mit demselben SmtpClient senden möchten und Sie nicht möchten, dass der Client entsorgt wird, sobald Sie die erste Nachricht entfernt haben).

>     
Bradley Grainger 19.05.2011, 14:39
quelle
0

Dieses Beispiel: Aus der MSDN Library-Dokumentation wird nur die Nachricht geschlossen, also gehe ich mit dieser in meiner Implementierung: SmtpClient.SendAsync-Methode

%Vor%

Ich stieß auf dieses Problem, auf das in dieser Frage Bezug genommen wurde, wo der Versand immer abgebrochen wurde, also entferne ich meine {} Anweisung: SmtpClient.SendAsync-Anrufe werden automatisch abgebrochen

Okay, ich habe gerade versucht, die message.Dispose () auszugeben, und selbst das warf den Fehler, dass es die E-Mail nicht senden konnte, weil die Nachricht entsorgt wurde. Möglicherweise, weil meins eine asp.net mvc App ist und das Beispiel eine Konsolen-App ist. In jedem Fall sollte der Garbage Collector diese Optionen aufgreifen, sobald alles außerhalb des Gültigkeitsbereichs liegt ...

    
Nathan Prather 28.01.2013 17:55
quelle

Tags und Links