हमें Task.ContinueWith()
विधि क्यों चाहिए? क्या हम सिर्फ कार्य निकाय के अंदर "निरंतरता कोड" नहीं लिख सकते हैं?हमें क्यों जारी रखने की विधि की आवश्यकता है?
उत्तर
कभी-कभी आपको बाहर से एक कार्य प्राप्त होता है और आप अपनी निरंतरता को श्रृंखला में रखना चाहते हैं। कार्य के बिना कार्य बनाने के तरीके भी हैं (उदाहरण के लिए कार्य पूर्णीकरण स्रोत का उपयोग करना)।
टास्क निरंतरता कार्य की जंजीरों की अनुमति, श्रृंखला में प्रत्येक कार्य एक अन्य टास्क
इसके अलावा द्वारा पीछा किया जाता Task.ContinueWith
विधि में आप एसिंक्रोनस रूप से जांच कर सकते हैं Task
TaskContinuationOptions
साथ जब लक्ष्य Task
पूरा करता है या कोई त्रुटि होती है
Task task = Task.Factory.StartNew
(
() =>
{
//Your action when the task started
}
);
task.ContinueWith
(
_ =>
{
//Your action when the task completed
},
CancellationToken.None,
TaskContinuationOptions.OnlyOnRanToCompletion | TaskContinuationOptions.AttachedToParent,
TaskScheduler.FromCurrentSynchronizationContext()
);
task.ContinueWith
(
(t) =>
{
//Action when error occured
Exception exception = null;
if (t.Exception.InnerException != null)
{
exception = t.Exception.InnerException;
}
else
{
exception = t.Exception;
}
//You can use this exception
},
CancellationToken.None,
TaskContinuationOptions.OnlyOnFaulted | TaskContinuationOptions.AttachedToParent,
TaskScheduler.FromCurrentSynchronizationContext()
);
अधिक जानकारी के लिए देखने के here
साशा Goldshtein के जवाब सही है। ऐसे कई उदाहरण हैं जहां आपके 'जारी रखें' रचना कोड के पास सीधे पहुंच नहीं है, या किसी कार्य की निष्पादन विधि भी सेट नहीं है। उदाहरण के लिए, एक प्लग करने योग्य प्रणाली जो कुल योग करना चाहता है।
हालांकि, एक और कारण है जो लागू हो सकता है। ग्रैन्युलरिटी
TaskCreationOptions.LongRunning के उपयोग को उत्तेजित करने वाली आवश्यकताओं पर विचार करें। समानांतर प्रणाली में जहां कई सैकड़ों प्रक्रियाओं को निर्धारित, निष्पादित और पूरा किया जा रहा है, कार्य शेड्यूलर कार्यों को शेड्यूल करते समय कुशल प्रोसेसर एफ़िनिटी को बढ़ावा देने के लिए काम कर रहा है।
यदि आप ऐसी परिस्थिति में हैं जहां आप ठीक से काम किए गए उप कार्यों में एक कार्य को तोड़ सकते हैं और उन्हें चेन कर सकते हैं, तो आपको अब TaskCreationOptions.LongRunning का उपयोग करने की आवश्यकता नहीं होगी। सरल शब्दों में, यह बेहतर प्रदर्शन करेगा क्योंकि एक ही समय में खत्म करने के लिए 100 छोटे कार्यों को निर्धारित करना आसान है, क्योंकि यह केवल 4 कोर उपलब्ध वातावरण में ऐसा करने के लिए 10 बड़े कार्यों को निर्धारित करना है। याद रखें कि एक जंजीर कार्य को इसके पूर्ववर्ती के तुरंत बाद शुरू करने की गारंटी नहीं है।
यह एक दिलचस्प सवाल है और एक ऐसा होता है जब आप स्केलेबल सिस्टम चाहते हैं तो केवल एक मुद्दा बन जाता है।
यदि आप मुझसे पूछते हैं, तो आपको जहां भी संभव हो, KeepWith() का उपयोग करना चाहिए क्योंकि यह आपके ऐप पैमाने पर मदद करेगा।
- 1. हमें सी # प्रतिनिधियों की आवश्यकता क्यों है
- 2. हमें लक्ष्य नामस्थान की आवश्यकता क्यों है?
- 3. हमें "हटाएं []" ऑपरेटर की आवश्यकता क्यों है?
- 4. हमें वेब-सॉकेट की आवश्यकता क्यों है?
- 5. हमें फ़ील्ड टैग की आवश्यकता क्यों है?
- 6. हमें डिज़ाइन पैटर्न की आवश्यकता क्यों है
- 7. हमें संरचना की आवश्यकता क्यों है? (सी #)
- 8. हमें यहां टाइपनाम की आवश्यकता क्यों है?
- 9. हमें strdup() की आवश्यकता क्यों है?
- 10. हमें "आउट" पैरामीटर की आवश्यकता क्यों है?
- 11. हमें मूल क्वेरी बनाने की आवश्यकता क्यों है?
- 12. क्या हमें java.lang.Object से getClass() विधि की आवश्यकता है?
- 13. इस संपत्ति को 'बनाए रखने' की आवश्यकता क्यों है?
- 14. हमें सजावटी डिजाइन पैटर्न में सजावट की आवश्यकता क्यों है?
- 15. हमें Nuget जैसे पैकेज प्रबंधक की आवश्यकता क्यों है?
- 16. हमें ढांचे के ढांचे की आवश्यकता क्यों है?
- 17. PHP: हमें स्ट्रिंग तुलना फ़ंक्शन की आवश्यकता क्यों है?
- 18. . हमें System.gc(); को कॉल करने की आवश्यकता क्यों है ??
- 19. हमें जावा में इंटरफेस की आवश्यकता क्यों है?
- 20. हमें डेटाबेस टेबल्स में ऑडिट कॉलम की आवश्यकता क्यों है?
- 21. हमें अभी भी जेनरेट कोड की आवश्यकता क्यों है?
- 22. हमें सी ++ में शुद्ध आभासी विनाशक की आवश्यकता क्यों है?
- 23. हमें एक निजी निर्माता की आवश्यकता क्यों है?
- 24. हमें RuntimeException में प्रयास करने की आवश्यकता क्यों नहीं है?
- 25. हमें मॉलोक रिटर्न डालने की आवश्यकता क्यों है?
- 26. हमें गतिशील भाषाओं में इंटरफेस की आवश्यकता क्यों नहीं है?
- 27. हमें ब्लॉक मैक्रो के आसपास कोष्ठक की आवश्यकता क्यों है?
- 28. हमें इस विशेष === ऑपरेटर की आवश्यकता क्यों है?
- 29. हमें एक अस्थायी डेटाबेस की आवश्यकता क्यों है?
- 30. हमें तीसरे पक्ष के निर्माण उपकरण की आवश्यकता क्यों है?