내 응용 프로그램은 iis 6 (windows 2003)에서 실행되는 asp.net 3.5입니다. 이 응용 프로그램은 매일 1000 명의 사용자 (100-500 사용자 온라인)를 제공합니다.asp.net ThreadPool - 장기 실행 작업
주간지에 이메일 뉴스 레터를 보내고 싶습니다.
매번 약 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);
}
}
나는 응용 프로그램이 많은 작업 속도가 느린 것을 볼 (내 dev에 기계에) 로컬로이 테스트.
- 이 코드를 작성하는 더 좋은 방법이 있습니까?
- ThreadPool.QueueUserWorkItem을 사용하거나 Thread t = new thread (새 ThreadStart (DoWork))을 사용하여 새 스레드를 만들어야합니까? ?
- 뉴스 레터를 보낼 목적으로 완전히 별도의 응용 프로그램을 만드는 것이 더 좋을까요? 이 응용 프로그램을 같은 컴퓨터에서 잘못 실행하면 도움이 될까요?
ThreadPool 대 Thread에 대해 언급 한 다른 게시물을 보았습니다.하지만 아무도 확실하지 않습니다.
감사합니다. , 만약 내가 창문 서비스를 만들뿐만 아니라 그 스레드를 사용해야합니까? asp.net을 계속 사용한다면 ThreadPool을 사용하는 것보다 새로운 스레드가 더 좋은 이유는 무엇입니까? – RuSh
예, 스레드를 사용하는 것이 좋습니다. ASP.NET을 계속 사용하면 장기 실행 작업에 ThreadPool을 사용하는 것은 좋지 않습니다. 왜냐하면 이러한 스레드가 요청을 처리하는 데 사용되기 때문에 많은 작업이 차단되어 사이트가 작동을 멈출 수 있기 때문입니다. –