C # Огонь и Забудьте соображения - PullRequest
1 голос
/ 16 марта 2012

Я подумываю использовать шаблон «забей и забудь» для отправки электронных писем из приложения ASP / C #, чтобы пользователь не ждал, пока он сделает свое дело.Я уже использовал этот шаблон, как объясняет эта статья:

http://microsoftmentalist.com/2012/02/02/asp-netcall-synchronous-method-asynchronously-asp-net-fire-and-forget/

Все очень просто, но мне действительно нужно знать о соображениях производительности.Должен ли я просто продолжать создавать новые темы каждый раз, когда мне нужно отправить электронное письмо, и просто доверять фреймворку для управления ими?Или есть способ, которым я могу вручную вернуть поток в пул после его завершения?

Ответы [ 3 ]

5 голосов
/ 16 марта 2012

НЕ голодать ThreadPool приложения. Вместо этого используйте SmartThreadPool , если у вас есть много потоков для создания в одном процессе. В статье есть пример Fire & Forget.

Но ... самый простой способ получить электронное письмо - использовать QueueUserWorkItem:

ThreadPool.QueueUserWorkItem(o => SendEmail(emailTo, emailFrom, emailSubject, emailBody));

Вам не нужно беспокоиться о том, чтобы вернуть поток обратно в пул потоков. Управление Threadpool автоматически обрабатывается через среду при использовании класса ThreadPool.

2 голосов
/ 16 марта 2012

В идеале вы должны представить свои рабочие элементы, используя ThreadPool.Он отвлечет правильное объединение и управление потоками, так что ваше приложение останется отзывчивым и стабильным, и разработчик не испортит его:)

1 голос
/ 16 марта 2012

Код в предоставленной вами ссылке использует пул потоков , вам не нужно об этом заботиться. Он будет использовать поток из пула и вернет его обратно в пул после его завершения.

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