Saturday 15 March 2014

c# - Handle exception in consumer queue -


  पब्लिक क्लास प्रोड्यूसर कंस्यूमर क्यूय्यू {सार्वजनिक शून्य एन्क्यू टास्क (माइ टास्क कार्य) {} शून्य कार्य () {जबकि (सच) { कोशिश {// मेरा काम थ्रेड। यहां जाता है (2000); } पकड़ (अपवाद पूर्व) {लॉग (पूर्व); }}}}   

निर्माता:

  सार्वजनिक शून्य जोड़ें () {MyTask task = new MyTask (); नया निर्माता कंस्यूमर क्यूउ ()। एन्क्यू टास्क (कार्य); }   

मैं .NET 3.5 में हूं।

Add () विधि को मेरे एपीआई उपयोगकर्ताओं द्वारा बुलाया जाएगा। ऊपर दिए गए उदाहरण में, विधि के अंदर, शून्य कार्य (), मैं अपवाद को पकड़ रहा हूं और वहां लॉगिंग कर रहा हूं।

लेकिन इसके बजाय, मैं उपयोगकर्ता को अपवाद को पकड़ने और पुनः प्राप्त करना चाहता हूं। सैमटाइम, स्थायी लय जो कि लूप के अंदर चलती है, कतार में अगले कार्य को जारी रखने के द्वारा अपवाद से ठीक हो जाना चाहिए। मेरा छोटा सा सवाल यह है कि मैं कैसे अपवाद निकाल दूंगा जो शून्य कार्य के अंदर होता है, लेकिन फिर भी ग्राहक कतार में अगले कार्य के लिए जीवित रहते हैं।

टिप्पणियों से हमारी चर्चा जारी रखने के लिए, संभवतः आप कार्यों की कतार (हालांकि आपको चक्रों पर कतार को निष्पादित करने की आवश्यकता है) और फिर इसे कॉलर को वापस फेंकना। तो ऐसा कुछ:

  सार्वजनिक शून्य ExecuteAllTasks () {var अपवाद = नई सूची & lt; अपवाद & gt; (); IEnumerable & LT; MyTask & gt; कार्य = गेटक्वायएटेड टास्क (); // सभी कार्यों को प्राप्त करें (या संभवत: उन्हें विधि से गुजारें) ... foreach (कार्य में माई टास्क कार्य) {try {// अपने कार्यों को यहाँ निष्पादित करें ...} पकड़ (अपवाद पूर्व) {// सभी अपवाद अपवाद इकट्ठा करें .Add (पूर्व); }} // सभी त्रुटियों को एक बार में फेंकें अगर (अपवाद। कोई भी) नए एकत्रित अपवाद (_exceptions) फेंकें; }   

मुझे उम्मीद है यह मदद करता है।

No comments:

Post a Comment