SmtpClient.Dispose メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
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を呼び出してください。 それ以外の場合、使用しているリソースは解放されないため、ガベージ コレクターはメモリを再利用できます。