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

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

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

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

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


person divya    schedule 30.05.2011    source источник


Ответы (2)


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

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

person Aseem Gautam    schedule 30.05.2011
comment
Но не могли бы вы сказать мне, какой из них следует использовать ?? - person divya; 30.05.2011
comment
Если отправка включает вложения и занимает немного времени, используйте Async. Но вам придется потратить некоторое время на чтение того, как асинхронные операции работают в .NET. MSDN уже предоставил пример для smtpClient.SendAsync, вы можете продолжить и использовать его. - person Aseem Gautam; 30.05.2011
comment
@AseemGautam SendAsync() не использует поток ThreadPool, он просто использует диспетчер асинхронных операций. - person Rushi Soni; 30.10.2013
comment
Это довольно хорошо объясняет функцию SendAsync(): docs.microsoft.com/en-us/dotnet/api/ - person Sam; 16.09.2020

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

person Anuraj    schedule 30.05.2011