Мое приложение - asp.net 3.5, работающее на iis 6 (windows 2003)
Это приложение обслуживает тысячи пользователей ежедневно (100-500 пользователей онлайн).
Я хочу отправлять рассылку по электронной почте клиентам еженедельно.
Около 200 000 писем каждый раз.
Это код, который я использую:
ThreadPool.QueueUserWorkItem(new WaitCallback(AsyncProcessMailerQueue), null);
private static void AsyncProcessMailerQueue(object data)
{
for (int i=0;i<users.count ; i++)
{
MailMessage message = new MailMessage();
.......
SmtpClient smtpClient = new SmtpClient();
smtpClient.Send(message);
}
}
При локальном тестировании (на моем компьютере разработчика) я вижу, что приложение работает намного медленнее.
- Есть ли лучший способ написать этот код?
- Должен ли я использовать ThreadPool.QueueUserWorkItem или создать новый поток, используя Thread t = new Thread (new ThreadStart (DoWork)); ?
- Будет ли лучше создать совершенно отдельное приложение для рассылки новостей. Поможет ли это, если я не смогу запустить это приложение на той же машине?
Я видел здесь другие сообщения о ThreadPool против Thread, но, похоже, никто не уверен, что лучше.