c# - What's the Current and Recommended Way to Fire Off an Asynchronous Thread? -


मेरे पास ASP.NET MVC 3 (.NET 4) वेब अनुप्रयोग है।

मेरे पास एक [एचटीटीपीओस्ट] एक्शन मेथड जो डेटाबेस को कुछ डेटा सबमिट करता है।

अब, इस पद्धति के बाद रिपॉजिटरी में बने रहना खत्म हो रहा है, मैं एक "पृष्ठभूमि" कार्य निष्पादित करना चाहता हूं ऑडिटिंग या ईमेल भेजना, आदि), जहां मुझे परिणाम के बारे में परवाह नहीं है (जब तक कोई त्रुटि नहीं होती, तब तक मैं लॉगिंग कर सकता हूँ)।

मैं इसे कैसे रोक सकता हूं कार्य क्रिया पद्धति से कार्य? <प्री> [एचटीटीपी पोस्ट] [प्राधिकृत] सार्वजनिक कार्यप्रणाली बनाएँ (मैव्वॉइ मॉडल मॉडल) {if (ModelState.IsValid) {_repo.Save (मॉडल); // TODO: फ़ायर ऑफ थ्रेड रिडायर्ड रीडायरेक्ट टीरो व्यू ("कुछ पृष्ठ", नया {id = model.id}); } वापसी देखें (मॉडल); }

ऐसा करने के लिए नया .NET 4 तरीका एक कार्य के साथ है

<पूर्व> कार्य। फ़ैक्टर। स्टार्टन्यू (MyBackgroundAction);

लेकिन इस सरल ऑपरेशन के लिए जहां आप इसे चलाने के लिए चाहते हैं और कार्य समन्वय करने की परवाह नहीं करते हैं, यह थ्रेडपूल का उपयोग करना आसान है।

  ThreadPool.QueueUserWorkItem (MyBackgroundAction)   

आप प्रत्येक कार्रवाई के लिए एक नया थ्रेड स्वयं बनाने से बचना चाहते हैं - यह अधिक संसाधनों को लेता है और अनावश्यक रूप से बेकार है।

यदि आप पृष्ठभूमि कार्य कर रहे हैं तो लंबे समय से चल रहे हैं, तो आप एक निर्माता / उपभोक्ता कतार को सेटअप करना चाहते हैं और कार्य चलाने के लिए निरंतर चल रहे पृष्ठभूमि थ्रेडों की एक या सेट संख्या निर्धारित कर सकते हैं।

Comments