Схожа ли производительность хранения электронной почты в каталоге раскладки с асинхронной отправкой? - PullRequest
0 голосов
/ 02 октября 2009

ASP.NET MVC 1 не поддерживает асинхронные потоки, порожденные внутри контроллера (пока что есть что-то в сборке Futures и MVC 2 Preview, но ничего в выпуске производственного уровня). Однако я хочу отправить свою электронную почту асинхронно, и в настоящее время я изучаю варианты для этого.

Однажды, казалось бы, простой вариант, вместо того, чтобы фактически отправлять электронную почту синхронно, кажется, что он устанавливает метод доставки, чтобы отбрасывать каталог, а не отправлять его, и затем SMTP-сервер получает почту в своем собственном темпе.

Схожа ли производительность использования каталога отбрасывания с асинхронной отправкой электронной почты?

1 Ответ

0 голосов
/ 02 октября 2009

SmtpClient на самом деле имеет SendAsync метод, который можно использовать.


UPDATE:

После дальнейшего анализа этого сценария кажется, что использование SmtpClient.SendAsync внутри синхронного контроллера вызывает следующее исключение:

Асинхронные операции не являются разрешено в этом контексте. Начало страницы асинхронная операция должна иметь атрибут Async установлен в true и асинхронная операция может быть только началось на странице до Событие PreRenderComplete.

В качестве обходного пути можно создать ручную нить:

public ActionResult Index()
{
    new Thread(() =>
    {
        // TODO: Add exception handling here:
        var client = new SmtpClient("host");
        client.Send("from", "to", "subject", "body");
    }).Start();

    return View();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...