मैं नियंत्रक विधि के भीतर से एक एसिंक्रोनस विधि कैसे निष्पादित कर सकता हूं और एटीएनसीटी प्रतिनिधि के समय से पहले निष्पादन को समाप्त करने के बिना एक HttpStatusCodeResult (200) वापस कर सकता हूं?मैं एएसपीनेट एमवीसी में एसिंक विधि को सही तरीके से निष्पादित कैसे करूं?
मैं एएसपीनेट एप्लिकेशन पर काम कर रहा हूं और मेरी कार्रवाई में से एक मेरे घर नियंत्रक को चलाने के लिए लंबा समय लगता है (10-30 सेकंड)। मैं एक HttpStatusCodeResult (200) वापस करना चाहता हूं और अपना काम चलाना जारी रखता हूं। Functoin को कुछ भी वापस करने की आवश्यकता नहीं है, लेकिन फिर भी यह वास्तव में आग का मामला नहीं है और भूल जाता है क्योंकि मैं तुरंत HttpStatusCodeResult
के साथ सर्वर पर प्रतिक्रिया देता हूं।
मैंने प्रतिनिधियों का उपयोग करने की कोशिश की, लेकिन ऐसा लगता है कि एक बार जब मैं कार्रवाई से स्टेटस कोड वापस कर देता हूं, तो प्रतिनिधि निष्पादित करना बंद कर देता है। एक और विकल्प विंडोज़ सेवा बनाना है, लेकिन यह एक फ्लाई को मारने के लिए एक बाजुका का उपयोग करना होगा। मुझे बहुत कम अनुरोध मिलते हैं इसलिए संसाधन और प्रदर्शन मेरे मामले में कोई मुद्दा नहीं है। मैंने सुना है ThreadPool.QueueUserWorkItem
एक विकल्प है, लेकिन जो मेरे मामले के लिए सबसे उपयुक्त है?
यह आपकी सबसे अच्छी शर्त हो सकती है: [एएसपी.नेट एमवीसी में एक असीमित नियंत्रक का उपयोग करना] (http://msdn.microsoft.com/en-us/library/ee728598.aspx) –
लेकिन मुझे लगता है कि यह केवल उपयोग को अनुकूलित करता है थ्रेड पूल का, मेरा मतलब है कि मैं httpstatus कोड वापस नहीं कर सकता और निष्पादन जारी रख सकता हूं, _Converting सिंक्रोनस एक्शन विधियों को असीमित क्रिया विधियों_ अनुभाग –