SmtpClient Classは、インスタンスメンバーがスレッドセーフではないことを示しています。これは、同時呼び出しがSendまたはSendAsyncに行われた場合に発生します。両方のメソッドは、最初のコールがまだ完了していない場合、2番目のコールでInvalidOperationExceptionをスローします。SmtpClient.SendMailAsyncメソッドはスレッドセーフですか?
.NET 4.5に導入されたSendMailAsyncメソッドは、Throw例外としてInvalidOperationExceptionをリストしません。新しい.NET 4.5メソッドは何らかの種類のキューイングを実装しますか? Reflectorはこのクラスの実装の詳細については何も明らかにすることができないので、これはネイティブメソッドで実装されていると仮定します。
複数のスレッドがSMTPクライアントの共有インスタンス上でSendMessageAsyncメソッドを安全に呼び出すことはできますか?
スレッドセーフではないメソッドは、複数のスレッドからアクセスすると例外をスローする必要はありません。 – svick