ASP.Net एप्लिकेशन में, उपयोगकर्ता वेबपेज पर एक बटन क्लिक करता है और इसके बाद ईवेंट हैंडलर के माध्यम से सर्वर पर एक ऑब्जेक्ट को इंस्टेंट करता है और ऑब्जेक्ट पर एक विधि कहता है। सामान करने के लिए विधि एक बाहरी प्रणाली पर जाती है और इसमें कुछ समय लग सकता है। इसलिए, मैं जो करना चाहूंगा, वह विधि कॉल किसी अन्य थ्रेड में चलाएं ताकि मैं "आपका अनुरोध सबमिट किया गया" के साथ उपयोगकर्ता को नियंत्रण वापस कर सके। मैं इसे आग-और-भूल के रूप में करने के लिए तर्कसंगत रूप से खुश हूं, हालांकि यह भी अच्छा होगा यदि उपयोगकर्ता स्थिति के अनुसार मतदान कर सकता है।
मुझे नहीं पता कि क्या आईआईएस मेरे धागे को चालू रखने की अनुमति देता है, भले ही उपयोगकर्ता सत्र समाप्त हो जाए। कल्पना कीजिए, उपयोगकर्ता घटना को आग लगाता है और हम सर्वर पर ऑब्जेक्ट को त्वरित करते हैं और एक नए थ्रेड में विधि को आग लगाते हैं। उपयोगकर्ता "आपका अनुरोध सबमिट किया गया है" संदेश से खुश है और अपने ब्राउज़र को बंद कर देता है। आखिरकार, यह उपयोगकर्ता सत्र IIS पर टाइम आउट हो जाएगा, लेकिन थ्रेड अभी भी चल रहा है, काम कर सकता है। क्या IIS थ्रेड को चालू रखने की अनुमति देगा या क्या उपयोगकर्ता सत्र समाप्त होने के बाद यह इसे मार देगा और ऑब्जेक्ट का निपटान करेगा?
संपादित करें: उत्तर और टिप्पणियों से, मैं समझता हूं कि ऐसा करने का सबसे अच्छा तरीका IIS के बाहर लंबे समय से चल रहे प्रसंस्करण को स्थानांतरित करना है। बाकी सब चीजों के अलावा, यह एपिडोमाइन रीसाइक्लिंग समस्या से निपटता है। व्यवहार में, मुझे सीमित समय में जमीन से संस्करण 1 प्राप्त करने की आवश्यकता है और एक मौजूदा ढांचे के अंदर काम करना है, इसलिए सेवा परत से बचना चाहते हैं, इसलिए IIS के अंदर धागे को बंद करने की इच्छा है। व्यवहार में, "लंबे समय से चल रहा है" यहां केवल कुछ मिनट होंगे और वेबसाइट पर संक्षिप्तता कम होगी इसलिए यह ठीक होना चाहिए। लेकिन, अगले संस्करण में निश्चित रूप से एक अलग सेवा परत में विभाजन की आवश्यकता होगी।