Как вызвать еще одно действие контроллера асинхронно? - PullRequest
0 голосов
/ 30 июня 2011

Я использую ActionMailer.net для отправки писем с моего веб-сайта MVC, проблема в том, что отправка электронной почты несколько раз занимает несколько секунд, и это задерживает мои вызовы ajax.

Я пытался использовать DeliverAsync(), но та же задержка все еще там, я называю действие контроллера ActionMailer следующим образом:

new EmailController().EntryEmail(CurrentUser, CurrentUser, postText).DeliverAsync();

Итак, мой вопрос, есть ли способ вызвать то же действие, но в другом потоке или асинхронно.

Примечания:
Я попытался сделать так, чтобы контроллер ActionMailer наследовал от AsyncController, но не смог, потому что он уже наследуется от другого класса.

Также для справки я задавал этот вопрос раньше: Можно ли отправлять электронную почту из другой темы, подобной этой?

1 Ответ

0 голосов
/ 30 июня 2011

Почему бы не создать новый базовый класс, который наследуется от AsyncController?

Для простого запуска и забыть, что вы можете использовать ThreadPool.QueueUserWorkItem.

Лично я предпочитаю ставить электронные письма в очередь и иметьотдельный фоновый поток обрабатывает очередь.Это может быть просто таблица электронной почты в базе данных и System.Threading.Timer

...