मेरा एप्लिकेशन आईएस 6 (विंडोज 2003) पर चल रहा एएसपीनेट 3.5 है। यह एप्लिकेशन प्रतिदिन 1000 उपयोगकर्ताओं (100-500 उपयोगकर्ता ऑनलाइन) की सेवा कर रहा है।asp.net थ्रेडपूल - लंबे समय तक चलने वाला ऑपरेशन
मैं ग्राहकों को साप्ताहिक ग्राहकों को एक ईमेल न्यूजलेटर भेजना चाहता हूं।
हर बार लगभग 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 का उपयोग करें या थ्रेड टी का उपयोग कर एक नया धागा बनाना चाहिए = नया थ्रेड (नई ThreadStart (DoWork)); ?
- न्यूज़लेटर्स भेजने के उद्देश्य के लिए एक पूरी तरह से अलग आवेदन बनाना बेहतर होगा। क्या यह मदद करेगा यदि इस एप्लिकेशन को उसी मशीन पर बीमार चलाया जाए?
मैंने अन्य पोस्ट यहां थ्रेडपूल बनाम थ्रेड के बारे में बात करते हुए देखा है लेकिन ऐसा लगता है कि कोई भी बेहतर नहीं है।
धन्यवाद! , अगर मैं एक विंडोज सेवा बना देता हूं, तो क्या मुझे उसमें धागे का उपयोग करना चाहिए? अगर मैं एएसपीनेट का उपयोग करता रहता हूं, थ्रेडपूल का उपयोग करने से नया धागा बेहतर क्यों है? – RuSh
हां, धागे का उपयोग करने की सिफारिश की जाती है। यदि आप ASP.NET का उपयोग करते रहें तो लंबे समय तक चलने वाले कार्यों के लिए थ्रेडपूल का उपयोग करना एक बुरा विचार है क्योंकि इन धागे का उपयोग सेवा अनुरोधों के लिए किया जाता है और यदि आपके पास उनमें से कई ऐसे ऑपरेशन के लिए अवरुद्ध हैं, तो साइट काम करना बंद कर सकती है। –