2012-01-10 9 views
9

मैंने इस विषय पर कुछ गुगल करने की कोशिश की है, लेकिन मुझे कुछ और जानकारी चाहिए।एएसपी.नेट कब एक नया धागा मार देगा?

मैं एक एएसपी.NET ऐप के अंदर एक नया धागा शुरू करने की कोशिश कर रहा हूं जो लंबे समय तक कुछ कामों का ख्याल रखेगा। अगर मैं इसे अपने web.config में डालता हूं:

<httpRuntime executionTimeout="5" /> 

नियमित अनुरोध 5 सेकंड के बाद टाइमआउट होगा। याद रखें यह परीक्षण के लिए है। जब मैं कोड से एक नया धागा शुरू:

var testThread = new Thread(new ThreadStart(CustomClass.DoStuffThatTakesLongTime)); 
    testThread.Start(); 

यह धागा अब से अधिक 5 सेकंड के लिए चलाया जाएगा, कि मैं क्या चाहते हो। परंतु। कितनी देर तक चलेंगे? मान लीजिए कि यह थ्रेड 5 घंटे लेता है (बस एक उदाहरण के रूप में)। धागा कब मारा जाएगा? ऐप पूल रीसाइक्लिंग होने तक यह तब तक चलता रहेगा? या क्या कोई और चीज है जो इस धागे को मार देती है?

+0

इसे आज़माएं, देखें कि क्या होता है। (नए थ्रेड को टेक्स्टफाइल पर समय लिखने दें या तो) संपादित करें: जांचें कि थ्रेड और कार्य का उपयोग करने के बीच कोई अंतर है या नहीं। – ZippyV

+0

यह चाहता है कि मैंने किया लेकिन मैं कुछ और कम करना चाहता हूं। थ्रेड सीम चलाने के लिए, लेकिन मैं और जानना चाहता हूं कि क्या गलत हो सकता है और क्या देखना है। –

उत्तर

9

एएसपी.नेट को आपके द्वारा बनाए गए धागे का कोई ज्ञान नहीं है - यह तब तक चलेगा जब तक ऐपपूल का पुनर्नवीनीकरण नहीं किया जाता है या यह पूरा हो जाता है।

के बाद से ASP.Net हालांकि इस सूत्र का ज्ञान नहीं होता, यह सर्वर सोचता है कि अगर है कि यह AppPool रीसायकल चाहिए किसी भी बिंदु पर काफी अचानक निरस्त किया जा सकता है, यह एक अच्छी बात नहीं होगा सकता है! 'AppDomainIsGoingDown' ईवेंट की सदस्यता लेने के तरीके पर Phil Haack wrote a blog post

क्या यह पैदा कर सकता है, मैं इस blog post by Tess Ferrandez पढ़ने की सलाह देते हैं, लेकिन संक्षेप में वे कर रहे हैं के बारे में:

  • यह इतना
  • machine.config करने के लिए तय किया गया है, वेब .config या Global.asax
  • बिन निर्देशिका संशोधित कर रहे हैं या इसकी सामग्री
  • संशोधित किया गया है फिर से संकलन (aspx, ascx या asax) की संख्या machine.config या web.config में सीमा सेटिंग द्वारा निर्दिष्ट से अधिक है (डिफ़ॉल्ट रूप से इस 15)
  • वर्चुअल निर्देशिका के भौतिक पथ संशोधित किया गया है करने के लिए सेट कर दिया जाता
  • कैस नीति संशोधित किया गया है
  • वेब सेवा पुन: प्रारंभ होने
  • (2.0 केवल) आवेदन उप-निर्देशिका नष्ट हो जाती हैं
+0

तो इसका मतलब है कि यह "उदाहरण" -थ्रेड 5h के लिए चलाएगा। क्या थ्रेड पूरा होने पर संसाधनों का ख्याल रखेगा या मुझे संसाधनों को किसी भी तरह से रिलीज़ करने की ज़रूरत है? –

+1

@ मार्कसकनप्पन जोहानसन थ्रेड तब तक चलेगा जब तक यह पूरा नहीं हो जाता है या ऐपपूल बंद हो जाता है। थ्रेड के जीवनकाल के दौरान अधिग्रहित सभी संसाधन प्रबंधित किए जाते हैं, सभी आवश्यक जीसी अभी भी किए जाएंगे। –

+0

तो। इस तथ्य के बारे में कि सर्वर द्वारा थ्रेड को निरस्त किया जा सकता है। क्या ऐसा होगा कि धागा वास्तव में कुछ के साथ काम कर रहा है? या सिर्फ अगर यह निष्क्रिय है? क्या इसके खिलाफ "रक्षा" करने का कोई तरीका है? –