2012-09-10 10 views
6

से एक अल्पकालिक पृष्ठभूमि कार्य चलाना मैं एक एएसपी.नेट एमवीसी 3 ऐप कोडिंग कर रहा हूं। जब कोई उपयोगकर्ता लॉग इन करता है तो मुझे रिमोट सिस्टम की जांच करने और सिस्टम से उस उपयोगकर्ता के लिए नवीनतम डेटा प्राप्त करने की आवश्यकता होती है। इस कार्य में लगभग 15 सेकंड लगेंगे।एमवीसी

उपयोगकर्ता अपने लॉगिन के बाद सीधे अपना ऐप दर्ज करने में सक्षम होना चाहिए (रिमोट कॉल के लिए 15 के लिए इंतजार नहीं करना है!)। जब रिमोट कॉल उपयोगकर्ताओं को पूरा करता है तो स्थानीय जानकारी अपडेट की जाएगी।

मैं ऐसा करने के लिए धागे का उपयोग करने के बारे में सोच रहा था, इसे लॉग इन करने और इसे अपना कोर्स चलाने के बाद इसे बना रहा था। हालांकि, एमवीसी में धागे के साथ काम करते समय, मैं रीसाइक्लिंग आदि के बारे में चिंतित हूं। मैं एक एसिंक नियंत्रक का उपयोग करूंगा, लेकिन मुझे उपयोगकर्ता को इस पृष्ठभूमि प्रक्रिया की स्थिति को प्रतिक्रिया देने की आवश्यकता नहीं है। क्या मैं धागे के बारे में चिंतित होने का अधिकार रखता हूं, भले ही वे अल्पकालिक हों?

+0

एक [समान प्रश्न] पर एक नज़र डालें (http://stackoverflow.com/a/11337836/706456) – oleksii

उत्तर

5

"... चिंतित रीसाइक्लिंग के बारे में ..."

"" ... प्रतिक्रिया के लिए उपयोगकर्ता के लिए राज्य ... की जरूरत नहीं है ".. । शॉर्ट-लाइव ... "

3 कारणों से आपको ThreadPool.QueueUserWorkItem का उपयोग क्यों करना चाहिए।

+0

यह वही है जो मुझे चाहिए। मैं विश्वास चाहता था कि वह थ्रेड पर कमांड फेंक दे और पेज लौटने के साथ आगे बढ़े। – matt

0

किसी वेब ऐप में "थ्रेड" का उपयोग न करें। सर्वर को "async" कॉल का उपयोग कर इसे संभालने दें। अन्यथा आपको एक थ्रेडपूल सेट करना होगा और धीमे अनुरोध को क्यू करना होगा।

+0

मैं इंप्रेशन प्रतीक्षा के तहत था/async वास्तव में पृष्ठभूमि कार्यों को लागू करने के लिए नहीं था। (अनुक्रमिक प्रवाह को कार्यान्वित करने के विरोध में जिसमें अवरुद्ध किए बिना लंबे समय तक चलने वाले संचालन शामिल हैं।) – millimoose

+0

यह किसी अन्य सर्वर से डेटा प्राप्त कर रहा है। AsyncController अनुरोध सेट अप करेगा तब तक थ्रेड जारी करेगा जब तक कोई प्रतिक्रिया न हो। – jrb