2011-01-31 14 views
7

टीपीएल में TaskContinuationOptions मूल्य हैं जो नियंत्रित करते हैं कि कार्य में कौन सी परिस्थितियां चलती हैं। उदाहरण के लिए, TaskContinuationOptions.NotOnCanceled किसी कार्य को तब चलने से रोकता है जब उसके माता-पिता को रद्द कर दिया जाता है।टीपीएल राज्य-फ़िल्टर किए गए बहु-कार्य निरंतरता का समर्थन क्यों नहीं करता है?

हालांकि, इनमें से कोई भी कार्य राज्य फ़िल्टर मल्टी-टास्क निरंतरता पर लागू नहीं होता है। आप की तरह कुछ भी नहीं कर सकते हैं:

TaskFactory f = new TaskFactory(); 
Task t1 = new Task (() => Thread.Sleep (5000)); 
Task t2 = new Task (() => Thread.Sleep (4000)); 
Task t3 = f.ContinueWhenAll (new Task[] { t1, t2 }, 
          (tasks) => { ... }, 
          TaskContinuationOptions.OnlyOnRanToCompletion); 

आपको एक त्रुटि है कि कहते हैं हो रही अंत, "It is invalid to exclude specific continuation kinds for continuations off of multiple tasks."

क्या मुझे समझ नहीं आता है कि क्यों इस हालत एपीआई से बाहर रखा जाएगा। यह एक पूरी तरह से वैध उपयोग केस क्यों नहीं होगा जब एक कार्य केवल तभी चलाना चाहिए जब सभी पूर्ववर्ती किसी विशेष राज्य में समाप्त हो जाएं?

उत्तर

0

"... केवल जब सभी पूर्ववृत्त एक विशेष स्थिति में समाप्त हो गया चलाने के लिए ..."

अपने शब्द नोट "सभी", मैं एमएस नहीं कर रहा हूँ, लेकिन मुझे यकीन है जाएगा कि यह साथ क्या करना है तथ्य यह है कि एक और पूरा TaskContinuationOptions enum की आवश्यकता होगी जिसमें All, Any, OnlyOne, AllButOne और इसी तरह से आगे भी शामिल होगा।

इसके अलावा, एरिक Lippert हमेशा के साथ "यह महंगा है और समय एक जोड़ने के लिए लेने वाली" सरल "सुविधा निम्न इस तरह सवालों का जवाब दे रहा है। रास्ता तो और अधिक, मूल बातें सही हो रही है और उपभोक्ताओं को बाकी लागू की तुलना में।

0

ContinueWhenAll साधन "सभी कार्यों को सफलतापूर्वक पूरा होने पर निरंतरता चलाएं"। NotOn* या OnlyOn* निर्दिष्ट करना या तो उस परिभाषा के विपरीत या अनिवार्य होगा। this MSDN article के टिप्पणी अनुभाग देखें।

संबंधित मुद्दे