次の方法で共有


SmtpClient.Dispose メソッド

定義

SMTP サーバーに QUIT メッセージを送信し、TCP 接続を正常に終了し、 SmtpClient クラスの現在のインスタンスで使用されているすべてのリソースを解放します。

オーバーロード

名前 説明
Dispose()

SMTP サーバーに QUIT メッセージを送信し、TCP 接続を正常に終了し、 SmtpClient クラスの現在のインスタンスで使用されているすべてのリソースを解放します。

Dispose(Boolean)

SMTP サーバーに QUIT メッセージを送信し、TCP 接続を正常に終了し、 SmtpClient クラスの現在のインスタンスで使用されているすべてのリソースを解放し、必要に応じてマネージド リソースを破棄します。

注釈

アプリケーションが同じ SMTP サーバーに複数のメッセージを送信する場合は、 SmtpClient クラスの現在のインスタンスによって確立された SMTP サーバーへの接続を再利用できます。 これは、認証または暗号化を使用して SMTP サーバーへの接続を確立する場合に特に便利です。 TLS セッションを認証して確立するプロセスは、コストのかかる操作になる可能性があります。 同じ SMTP サーバーに大量の電子メールを送信するときに、各メッセージの接続を再確立する必要があると、パフォーマンスに大きな影響を与える可能性があります。 電子メールの状態の更新、ニュースレターの配布、または電子メールアラートを送信する大量の電子メール アプリケーションが多数あります。 また、多くの電子メール クライアント アプリケーションは、ユーザーが SMTP サーバーへの接続が確立されたときに後で送信される多くの電子メール メッセージを作成できるオフライン モードをサポートしています。 電子メール クライアントでは、すべての SMTP メッセージを特定の SMTP サーバー (インターネット サービス プロバイダーが提供) に送信し、その後、この電子メールを他の SMTP サーバーに転送するのが一般的です。

SmtpClient クラス実装では、SMTP 接続がプールされるため、同じサーバーに対するすべてのメッセージの接続を再確立するオーバーヘッドを回避できます。 アプリケーションは、同じ SmtpClient オブジェクトを再利用して、同じ SMTP サーバーとさまざまな SMTP サーバーに多数の異なる電子メールを送信できます。 その結果、 SmtpClient オブジェクトを使用してアプリケーションがいつ終了し、クリーンアップする必要があるかを判断する方法はありません。

SMTP セッションが終了し、クライアントが接続を終了する場合は、サーバーに QUIT メッセージを送信して、送信するメッセージがなくなったことを示す必要があります。 これにより、サーバーはクライアントから接続に関連付けられているリソースを解放し、クライアントによって送信されたメッセージを処理できます。

Disposeメソッドは、確立されたすべての接続を反復処理し、各 SMTP サーバーに QUIT メッセージを送信してから、TCP 接続を正常に終了します。 これらのメソッドは、 Socket によって使用されるアンマネージ リソースも解放し、必要に応じてマネージド リソースを破棄します。

Dispose()

ソース:
SmtpClient.cs
ソース:
SmtpClient.cs
ソース:
SmtpClient.cs
ソース:
SmtpClient.cs
ソース:
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 サーバーへの接続を再利用できます。 これは、認証または暗号化を使用して SMTP サーバーへの接続を確立する場合に特に便利です。 TLS セッションを認証して確立するプロセスは、コストのかかる操作になる可能性があります。 同じ SMTP サーバーに大量の電子メールを送信するときに、各メッセージの接続を再確立する必要があると、パフォーマンスに大きな影響を与える可能性があります。 電子メールの状態の更新、ニュースレターの配布、または電子メールアラートを送信する大量の電子メール アプリケーションが多数あります。 また、多くの電子メール クライアント アプリケーションは、ユーザーが SMTP サーバーへの接続が確立されたときに後で送信される多くの電子メール メッセージを作成できるオフライン モードをサポートしています。 電子メール クライアントでは、すべての SMTP メッセージを特定の SMTP サーバー (インターネット サービス プロバイダーが提供) に送信し、その後、この電子メールを他の SMTP サーバーに転送するのが一般的です。

SmtpClient クラス実装では、SMTP 接続がプールされるため、同じサーバーに対するすべてのメッセージの接続を再確立するオーバーヘッドを回避できます。 アプリケーションは、同じ SmtpClient オブジェクトを再利用して、同じ SMTP サーバーとさまざまな SMTP サーバーに多数の異なる電子メールを送信できます。 その結果、 SmtpClient オブジェクトを使用してアプリケーションがいつ終了し、クリーンアップする必要があるかを判断する方法はありません。

SMTP セッションが終了し、クライアントが接続を終了する場合は、サーバーに QUIT メッセージを送信して、送信するメッセージがなくなったことを示す必要があります。 これにより、サーバーはクライアントから接続に関連付けられているリソースを解放し、クライアントによって送信されたメッセージを処理できます。

非同期SendAsync操作を実行しているSmtpClient オブジェクトに対してDispose メソッドを呼び出すと、SendAsyncCancel メソッドが呼び出されたかのように送信操作が取り消されます。

SmtpClient クラスにはFinalizeメソッドがありません。 そのため、アプリケーションは Dispose を呼び出してリソースを明示的に解放する必要があります。

Dispose メソッドは、Host プロパティで指定された SMTP サーバーへの確立されたすべての接続を反復処理し、QUIT メッセージを送信した後、TCP 接続を正常に終了します。 Dispose メソッドは、基になるSocketによって使用されるアンマネージ リソースも解放します。

SmtpClientの使用が完了したら、Disposeを呼び出します。 Dispose メソッドは、SmtpClientを使用できない状態のままにします。 Disposeを呼び出した後、SmtpClientが占有していたメモリをガベージ コレクターが再利用できるように、SmtpClientへのすべての参照を解放する必要があります。

詳細については、「 アンマネージ リソースのクリーンアップDispose メソッドの実装」を参照してください。

SmtpClientへの最後の参照を解放する前に、必ずDisposeを呼び出してください。 それ以外の場合、使用しているリソースは解放されないため、ガベージ コレクターはメモリを再利用できます。

適用対象

Dispose(Boolean)

ソース:
SmtpClient.cs
ソース:
SmtpClient.cs
ソース:
SmtpClient.cs
ソース:
SmtpClient.cs
ソース:
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 サーバーへの接続を再利用できます。 これは、認証または暗号化を使用して SMTP サーバーへの接続を確立する場合に特に便利です。 TLS セッションを認証して確立するプロセスは、コストのかかる操作になる可能性があります。 同じ SMTP サーバーに大量の電子メールを送信するときに、各メッセージの接続を再確立する必要があると、パフォーマンスに大きな影響を与える可能性があります。 電子メールの状態の更新、ニュースレターの配布、または電子メールアラートを送信する大量の電子メール アプリケーションが多数あります。 また、多くの電子メール クライアント アプリケーションは、ユーザーが SMTP サーバーへの接続が確立されたときに後で送信される多くの電子メール メッセージを作成できるオフライン モードをサポートしています。 電子メール クライアントでは、すべての SMTP メッセージを特定の SMTP サーバー (インターネット サービス プロバイダーが提供) に送信し、その後、この電子メールを他の SMTP サーバーに転送するのが一般的です。

SmtpClient クラス実装では、SMTP 接続がプールされるため、同じサーバーに対するすべてのメッセージの接続を再確立するオーバーヘッドを回避できます。 アプリケーションは、同じ SmtpClient オブジェクトを再利用して、同じ SMTP サーバーとさまざまな SMTP サーバーに多数の異なる電子メールを送信できます。 その結果、 SmtpClient オブジェクトを使用してアプリケーションがいつ終了し、クリーンアップする必要があるかを判断する方法はありません。

SMTP セッションが終了し、クライアントが接続を終了する場合は、サーバーに QUIT メッセージを送信して、送信するメッセージがなくなったことを示す必要があります。 これにより、サーバーはクライアントから接続に関連付けられているリソースを解放し、クライアントによって送信されたメッセージを処理できます。

非同期SendAsync操作を実行しているSmtpClient オブジェクトに対してDispose メソッドを呼び出すと、SendAsyncCancel メソッドが呼び出されたかのように送信操作が取り消されます。

SmtpClient クラスにはFinalizeメソッドがありません。 そのため、アプリケーションは Dispose を呼び出してリソースを明示的に解放する必要があります。

Dispose メソッドは、Host プロパティで指定された SMTP サーバーへの確立されたすべての接続を反復処理し、QUIT メッセージを送信した後、TCP 接続を正常に終了します。 Dispose メソッドは、Socketによって使用されるアンマネージ リソースも解放し、必要に応じてマネージド リソースを破棄します。

SmtpClientの使用が完了したら、Disposeを呼び出します。 Dispose メソッドは、SmtpClientを使用できない状態のままにします。 Disposeを呼び出した後、SmtpClientが占有していたメモリをガベージ コレクターが再利用できるように、SmtpClientへのすべての参照を解放する必要があります。

詳細については、「 アンマネージ リソースのクリーンアップDispose メソッドの実装」を参照してください。

SmtpClientへの最後の参照を解放する前に、必ずDisposeを呼び出してください。 それ以外の場合、使用しているリソースは解放されないため、ガベージ コレクターはメモリを再利用できます。

適用対象