Task.WaitAll वर्तमान थ्रेड को तब तक ब्लॉक करता है जब तक कि अन्य सभी कार्य निष्पादन पूरा नहीं कर लेते। कार्य। जब सभी विधि का उपयोग एक कार्य बनाने के लिए किया जाता है जो पूर्ण होगा यदि और केवल यदि अन्य सभी कार्य पूर्ण हो गए हैं।
अगर हम टास्क का उपयोग कर रहे हैं। जब हम सभी को एक टास्क ऑब्जेक्ट मिलेगा जो पूरा नहीं हुआ है। हालाँकि, यह ब्लॉक नहीं करेगा लेकिन प्रोग्राम को निष्पादित करने की अनुमति देगा। इसके विपरीत, TheTask.WaitAll मेथड कॉल वास्तव में ब्लॉक कर देती है और अन्य सभी कार्यों के पूरा होने की प्रतीक्षा करती है।
एक उदाहरण के साथ समझने के लिए, मान लें कि हमारे पास एक कार्य है जो UI थ्रेड के साथ कुछ गतिविधि करता है, जैसे कि उपयोगकर्ता इंटरफ़ेस में कुछ एनीमेशन दिखाने की आवश्यकता है। अब, यदि हम Task.WaitAll का उपयोग करते हैं, तो यूजर इंटरफेस को ब्लॉक कर दिया जाएगा और तब तक अपडेट नहीं किया जाएगा जब तक कि सभी संबंधित कार्य पूरे नहीं हो जाते और ब्लॉक जारी नहीं हो जाता। हालांकि, अगर हम टास्क का उपयोग कर रहे हैं। जब सभी एक ही एप्लिकेशन में हों, तो UI थ्रेड को ब्लॉक नहीं किया जाएगा और हमेशा की तरह अपडेट किया जाएगा।
कार्य के लिए उदाहरण.जब सभी -
उदाहरण
using System; using System.Threading.Tasks; namespace DemoApplication{ public class Program{ static void Main(string[] args){ Task task1 = new Task(() =>{ for (int i = 0; i < 5; i++){ Console.WriteLine("Task 1 - iteration {0}", i); Task.Delay(1000); } Console.WriteLine("Task 1 complete"); }); Task task2 = new Task(() =>{ Console.WriteLine("Task 2 complete"); }); task1.Start(); task2.Start(); Console.WriteLine("Waiting for tasks to complete."); Task.WhenAll(task1, task2); Console.WriteLine("Tasks Completed."); Console.ReadLine(); } } }
आउटपुट
उपरोक्त कोड का आउटपुट है
Waiting for tasks to complete. Tasks Completed. Task 1 - iteration 0 Task 2 complete Task 1 - iteration 1 Task 1 - iteration 2 Task 1 - iteration 3 Task 1 - iteration 4 Task 1 complete
उपरोक्त उदाहरण में हम देख सकते हैं कि टास्क का उपयोग करते समय। जब अन्य कार्यों के पूरा होने से पहले सभी कार्य पूर्ण हो जाते हैं। इसका मतलब है कि कार्य। जब सभी निष्पादन को अवरुद्ध नहीं करते हैं।
कार्य का उदाहरण.सभी प्रतीक्षा करें -
उदाहरण
using System; using System.Threading.Tasks; namespace DemoApplication{ public class Program{ static void Main(string[] args){ Task task1 = new Task(() =>{ for (int i = 0; i < 5; i++){ Console.WriteLine("Task 1 - iteration {0}", i); Task.Delay(1000); } Console.WriteLine("Task 1 complete"); }); Task task2 = new Task(() =>{ Console.WriteLine("Task 2 complete"); }); task1.Start(); task2.Start(); Console.WriteLine("Waiting for tasks to complete."); Task.WaitAll(task1, task2); Console.WriteLine("Tasks Completed."); Console.ReadLine(); } } }
आउटपुट
उपरोक्त कोड का आउटपुट है
Waiting for tasks to complete. Task 1 - iteration 0 Task 2 complete Task 1 - iteration 1 Task 1 - iteration 2 Task 1 - iteration 3 Task 1 - iteration 4 Task 1 complete Tasks Completed.
उपरोक्त उदाहरण में हम देख सकते हैं कि टास्क का उपयोग करते समय। प्रतीक्षा करें सभी कार्य पूर्ण होने के बाद ही अन्य सभी कार्यों को पूरा किया जाता है। इसका मतलब है कि टास्क.वेटऑलब्लॉक एक्ज़ीक्यूशन।