34

system.net.mail.smtpclient私が非常に混乱している2つの方法があります。

1. SendAsync(MailMessage, オブジェクト)

Sends the specified e-mail message to an SMTP server for delivery. This method does not block the calling thread and allows the caller to pass an object to the method that is invoked when the operation completes.-MSDN

2. SendMailAsync(メールメッセージ)

Sends the specified message to an SMTP server for delivery as an asynchronous operation.-MSDN

2 つのメソッドの名前が異なるため、オーバーロードではないことに注意してください。ここでの違いは正確には何ですか?

両方の方法についてMSDNによって提供された説明は非常にあいまいであるため、非常に明確な回答を探しています(少なくとも私にとってはそうです)。

4

4 に答える 4

30

違いは、1 つSendMailAsyncは新しいasync/awaitテクノロジを使用し、もう 1 つは古いコールバック テクノロジを使用することです。さらに重要なことに、渡されたは、メソッドの完了時にObjectとしてイベント ハンドラーに単純に渡されます。userState

于 2013-09-04T13:34:21.590 に答える
9

まず、両方とも非同期で動作します。

ただし、SendAsync.NET 2 から存在しています。下位互換性を維持しながら、新しいタスク システムをサポートするためSendMailAsyncに追加されました。

SendMailAsyncTaskではなく を返し、必要に応じて が新しい機能をサポートできるvoidようにします。SmtpClientasyncawait

于 2013-09-04T13:34:48.040 に答える
0

SendMailAsyncSendAsync More infoの単純な TAP ラッパー: SmtpClient.SendMailAsync メソッドはスレッド セーフですか?

于 2014-05-13T07:56:54.043 に答える