Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C#

कार्य के बीच क्या अंतर है। जब सभी () और कार्य। प्रतीक्षा करें () सी # में?

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.

उपरोक्त उदाहरण में हम देख सकते हैं कि टास्क का उपयोग करते समय। प्रतीक्षा करें सभी कार्य पूर्ण होने के बाद ही अन्य सभी कार्यों को पूरा किया जाता है। इसका मतलब है कि टास्क.वेटऑलब्लॉक एक्ज़ीक्यूशन।


  1. DirectX 11 और DirectX 12 में क्या अंतर है?

    DirectX, एपीआई या एप्लिकेशन प्रोग्रामिंग इंटरफेस का एक संग्रह है, जिसका उपयोग सॉफ्टवेयर द्वारा मल्टीमीडिया सामग्री को प्रस्तुत करने और ग्राफिकल हार्डवेयर के साथ संचार करने के लिए किया जाता है। DirectX का प्रमुख घटक API, Direct3D, सॉफ्टवेयर और ग्राफिक्स हार्डवेयर के बीच संचार को संभालता है। चूंकि सभी

  1. सी # में स्ट्रिंग और स्ट्रिंग के बीच क्या अंतर है?

    String System.String के लिए खड़ा है जबकि string System.String के लिए C# में एक उपनाम है - उदाहरण के लिए string str = "Welcome!"; यह आवश्यक नहीं है, लेकिन आम तौर पर जब आप कक्षाओं के साथ काम करते हैं तो स्ट्रिंग का उपयोग किया जाता है। string str = String.Format("Welcome! {0}!", u

  1. सी # में सूची और सरणी के बीच क्या अंतर है?

    एक सरणी एक ही प्रकार के तत्वों के एक निश्चित आकार के अनुक्रमिक संग्रह को संग्रहीत करती है, जबकि सूची एक सामान्य संग्रह है। सूची को परिभाषित करने के लिए - List<string7gt; myList = new List<string>(); सूची में तत्वों को सेट करने के लिए, आपको जोड़ें विधि का उपयोग करने की आवश्यकता है - myList