मेरे पास एक एएसपी.नेट एमवीसी 3 (.NET 4) वेब एप्लिकेशन है।असीमित थ्रेड को बंद करने के लिए वर्तमान और अनुशंसित तरीका क्या है?
मेरे पास [HttpPost]
एक्शन विधि है जो डेटाबेस में कुछ डेटा सबमिट करती है।
अब, इस विधि के बाद भंडार के लिए परिष्करण समाप्त हो रहा है, मैं एक "पृष्ठभूमि" कार्य निष्पादित करना चाहता हूं (ऑडिटिंग सोचना, या एक ईमेल भेजना आदि), जहां मुझे परिणाम की परवाह नहीं है (जब तक कोई त्रुटि न हो होता है, इस मामले में मैं लॉगिंग करूँगा)।
मैं अपने कार्य विधि से इस कार्य को कैसे बंद कर सकता/सकती हूं?
[HttpPost]
[Authorize]
public ActionResult Create(MyViewModel model)
{
if (ModelState.IsValid)
{
_repo.Save(model);
// TODO: Fire off thread
return RedirectToRoute("Somepage", new { id = model.id });
}
return View(model);
}
आपके उत्तर के लिए धन्यवाद।एक स्पष्टीकरण - "आप हर कार्रवाई के लिए खुद को एक नया थ्रेड बनाने से बचना चाहते हैं - यह अधिक संसाधन उठाएगा और अनावश्यक रूप से अपर्याप्त है" - मैं इसे और कैसे कर सकता हूं? मैं फिर नया धागा कहां बना सकता हूं? उदा। मैं 'ThreadPool.QueueUserWorkItem (MyBackgroundAction) 'कॉल कहां रखूं? – RPM1984
@ RPM1984 QueueUserWorkItem का उपयोग करना मतलब है कि कार्य एक थ्रेड द्वारा पूरा किया जाएगा जो पहले से ही एएसपी.Net थ्रेड पूल का हिस्सा है। ये थ्रेड कतार से लगातार काम कर रहे हैं और उन्हें पूरा कर रहे हैं, और आप अपने कोड में कहीं से भी एक नया कार्य संलग्न कर सकते हैं। हालांकि, मेरे उत्तर में जुड़े एएसपी.Net में इसकी बड़ी डाउनसाइड्स है। –
@ क्रिस - आपकी मदद और उत्तर के लिए धन्यवाद। बात यह है कि यह एक (अपेक्षाकृत) सरल ऐप है जिसमें भारी ट्रैफिक या समवर्ती उपयोगकर्ता नहीं हैं। अतीत में (संस्करण 1), हमने 'थ्रेड.स्टार्ट' का उपयोग किया और यह ठीक था। तो मुझे लगता है कि मैं 'ThreadPool.QueueUserWorkItem' के साथ जा रहा हूँ। – RPM1984