Разница между SmtpClient.send() и SmtpClient.SendAsync()?

#smtpclient

#smtpclient

Вопрос:

Я пытаюсь отправить почту с локального хостинга..

и при выполнении этого я получил методы с разных сайтов для отправки писем .. но при выполнении этого я запутался между smtpClient.send() и smtpClient.SendAsync() ..

Я хочу знать, чем они отличаются друг от друга???

Заранее спасибо..

Ответ №1:

smtpClient.send() инициирует отправку в основном потоке / ui и блокирует.
smtpClient.SendAsync() выберет поток из пула потоков .NET и выполнит метод в этом потоке. Таким образом, ваш основной пользовательский интерфейс не будет зависать или блокироваться.

Вызов асинхронного метода — http://www.codeproject.com/KB/cs/AsyncMethodInvocation.aspx

Комментарии:

1. Но можете ли вы сказать мне, какой из них следует использовать??

2. Если отправка включает вложения и занимает некоторое время, используйте асинхронность. Но вам придется потратить некоторое время на чтение того, как работают асинхронные операции в .NET. MSDN уже приводила пример для SmtpClient. SendAsync, вы можете продолжить и использовать его.

3. @AseemGautam SendAsync() не использует поток ThreadPool, он просто использует диспетчер асинхронных операций

4. Это довольно хорошо объясняет функцию SendAsync (): learn.microsoft.com/en-us/dotnet/api /…

Ответ №2:

SendAsyc — Отправляет указанное сообщение электронной почты на SMTP-сервер для доставки. Этот метод не блокирует вызывающий поток и позволяет вызывающей стороне передать объект методу, который вызывается по завершении операции. Подробнее : SmtpClient.Метод SendAsync