SmtpClient.Dispose 方法

定义

向 SMTP 服务器发送一条 QUIT 消息,适当地结束 TCP 连接,并释放由 SmtpClient 类的当前实例使用的所有资源。

重载

Dispose()

向 SMTP 服务器发送一条 QUIT 消息,适当地结束 TCP 连接,并释放由 SmtpClient 类的当前实例使用的所有资源。

Dispose(Boolean)

向 SMTP 服务器发送一条 QUIT 消息,适当地结束 TCP 连接,释放由 SmtpClient 类的当前实例使用的所有资源,并根据需要释放托管资源。

注解

如果应用程序希望向同一 SMTP 服务器发送多条消息,则类的当前实例 SmtpClient 建立的连接可以重新使用。 在使用身份验证或加密建立与 SMTP 服务器的连接时,这尤其有用。 身份验证和建立 TLS 会话的过程可能代价高昂。 向同一 SMTP 服务器发送大量电子邮件时,要求重新建立每条消息的连接可能会对性能产生重大影响。 有许多大量电子邮件应用程序用于发送电子邮件状态更新、新闻稿分发或电子邮件警报。 此外,许多电子邮件客户端应用程序支持一种线下模式,用户可以撰写许多电子邮件,这些电子邮件稍后在与 SMTP 服务器建立连接时发送。 电子邮件客户端通常将所有 SMTP 邮件发送到特定的 SMTP 服务器, (Internet 服务提供商) 然后将此电子邮件转发到其他 SMTP 服务器。

SmtpClient 实现将 SMTP 连接池化,以避免重新建立与同一服务器的每条消息建立连接的开销。 应用程序可能重复使用同一 SmtpClient 对象将许多不同的电子邮件发送到同一 SMTP 服务器和许多不同的 SMTP 服务器。 因此,无法确定应用程序何时完成使用 对象 SmtpClient ,并且应将其清理。

当 SMTP 会话完成并且客户端希望终止连接时,它必须向服务器发送 QUIT 消息,以指示它没有要发送的消息。 这允许服务器从客户端释放与连接关联的资源,并处理客户端发送的消息。

方法 Dispose 循环访问所有已建立的连接,并将 QUIT 消息发送到每个 SMTP 服务器,然后正常结束 TCP 连接。 这些方法还会释放 由 使用的非托管资源, Socket 并选择性地释放托管资源。

Dispose()

Source:
SmtpClient.cs
Source:
SmtpClient.cs
Source:
SmtpClient.cs

向 SMTP 服务器发送一条 QUIT 消息,适当地结束 TCP 连接,并释放由 SmtpClient 类的当前实例使用的所有资源。

public:
 virtual void Dispose();
public void Dispose ();
abstract member Dispose : unit -> unit
override this.Dispose : unit -> unit
Public Sub Dispose ()

实现

注解

如果应用程序希望向同一 SMTP 服务器发送多条消息,则类的当前实例 SmtpClient 建立的连接可以重新使用。 在使用身份验证或加密建立与 SMTP 服务器的连接时,这尤其有用。 身份验证和建立 TLS 会话的过程可能代价高昂。 向同一 SMTP 服务器发送大量电子邮件时,要求重新建立每条消息的连接可能会对性能产生重大影响。 有许多大量电子邮件应用程序用于发送电子邮件状态更新、新闻稿分发或电子邮件警报。 此外,许多电子邮件客户端应用程序支持一种线下模式,用户可以撰写许多电子邮件,这些电子邮件稍后在与 SMTP 服务器建立连接时发送。 电子邮件客户端通常将所有 SMTP 邮件发送到特定的 SMTP 服务器, (Internet 服务提供商) 然后将此电子邮件转发到其他 SMTP 服务器。

SmtpClient 实现将 SMTP 连接池化,以避免重新建立与同一服务器的每条消息建立连接的开销。 应用程序可能重复使用同一 SmtpClient 对象将许多不同的电子邮件发送到同一 SMTP 服务器和许多不同的 SMTP 服务器。 因此,无法确定应用程序何时完成使用 对象 SmtpClient ,并且应将其清理。

当 SMTP 会话完成并且客户端希望终止连接时,它必须向服务器发送 QUIT 消息,以指示它没有要发送的消息。 这允许服务器从客户端释放与连接关联的资源,并处理客户端发送的消息。

DisposeSmtpClient正在执行异步SendAsync操作的对象调用 方法将取消发送操作,就像SendAsyncCancel调用方法一样。

SmtpClient 没有 Finalize 方法。 因此,应用程序必须调用 Dispose 才能显式释放资源。

方法 Dispose 循环访问属性中指定的 Host SMTP 服务器的所有已建立连接,并发送 QUIT 消息,然后正常结束 TCP 连接。 方法 Dispose 还会释放基础 Socket使用的非托管资源。

在完成使用 Dispose 后,应调用 SmtpClientDispose 方法使 SmtpClient 处于不可用状态。 调用 Dispose后,必须释放对 SmtpClient 的所有引用,以便垃圾回收器可以回收 占用的内存 SmtpClient

有关详细信息,请参阅清理非托管资源和实现 Dispose 方法

注意

每次释放对 Dispose 的最后一个引用前,均应调用 SmtpClient。 否则,将无法释放它使用的资源,因此垃圾回收器可以回收内存。

适用于

Dispose(Boolean)

Source:
SmtpClient.cs
Source:
SmtpClient.cs
Source:
SmtpClient.cs

向 SMTP 服务器发送一条 QUIT 消息,适当地结束 TCP 连接,释放由 SmtpClient 类的当前实例使用的所有资源,并根据需要释放托管资源。

protected:
 virtual void Dispose(bool disposing);
protected virtual void Dispose (bool disposing);
abstract member Dispose : bool -> unit
override this.Dispose : bool -> unit
Protected Overridable Sub Dispose (disposing As Boolean)

参数

disposing
Boolean

如果释放托管资源和非托管资源,则为 true;如果仅释放非托管资源,则为 false

注解

如果应用程序希望向同一 SMTP 服务器发送多条消息,则类的当前实例 SmtpClient 建立的连接可以重新使用。 在使用身份验证或加密建立与 SMTP 服务器的连接时,这尤其有用。 身份验证和建立 TLS 会话的过程可能代价高昂。 向同一 SMTP 服务器发送大量电子邮件时,要求重新建立每条消息的连接可能会对性能产生重大影响。 有许多大量电子邮件应用程序用于发送电子邮件状态更新、新闻稿分发或电子邮件警报。 此外,许多电子邮件客户端应用程序支持一种线下模式,用户可以撰写许多电子邮件,这些电子邮件稍后在与 SMTP 服务器建立连接时发送。 电子邮件客户端通常将所有 SMTP 邮件发送到特定的 SMTP 服务器, (Internet 服务提供商) 然后将此电子邮件转发到其他 SMTP 服务器。

SmtpClient 实现将 SMTP 连接池化,以避免重新建立与同一服务器的每条消息建立连接的开销。 应用程序可能重复使用同一 SmtpClient 对象将许多不同的电子邮件发送到同一 SMTP 服务器和许多不同的 SMTP 服务器。 因此,无法确定应用程序何时完成使用 对象 SmtpClient ,并且应将其清理。

当 SMTP 会话完成并且客户端希望终止连接时,它必须向服务器发送 QUIT 消息,以指示它没有要发送的消息。 这允许服务器从客户端释放与连接关联的资源,并处理客户端发送的消息。

DisposeSmtpClient正在执行异步SendAsync操作的对象调用 方法将取消发送操作,就像SendAsyncCancel调用方法一样。

SmtpClient 没有 Finalize 方法。 因此,应用程序必须调用 Dispose 才能显式释放资源。

方法 Dispose 循环访问属性中指定的 Host SMTP 服务器的所有已建立连接,并发送 QUIT 消息,然后正常结束 TCP 连接。 方法 Dispose 还会释放 由 Socket 使用的非托管资源,并选择性地释放托管资源。

在完成使用 Dispose 后,应调用 SmtpClientDispose 方法使 SmtpClient 处于不可用状态。 调用 Dispose后,必须释放对 SmtpClient 的所有引用,以便垃圾回收器可以回收 占用的内存 SmtpClient

有关详细信息,请参阅清理非托管资源和实现 Dispose 方法

注意

每次释放对 Dispose 的最后一个引用前,均应调用 SmtpClient。 否则,将无法释放它使用的资源,因此垃圾回收器可以回收内存。

适用于