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()
?
Ich habe das MSDN-Dokument überprüft, ein Beispiel ruft MailMessage.Dispose () auf, aber wird diese dispose-Methode auch die SmtpClient
-Instanz?
Vielen Dank.
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).
>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 ...
Tags und Links c# dispose smtpclient sendasync