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

C# में मल्टीपल एसिंक टास्क चलाएं और सभी के पूरा होने की प्रतीक्षा करें

Task.WaitAll - वर्तमान थ्रेड को तब तक ब्लॉक करता है जब तक सभी अन्य टास्क निष्पादन पूरा नहीं कर लेते।

Task.WhenAll - एक टास्क बनाता है जो तभी पूरा होगा जब अन्य सभी टास्क पूरे हो जाएंगे। यह निष्पादन को ब्लॉक नहीं करता - यह एक टास्क लौटाता है जिसे अवेट किया जा सकता है।

उदाहरण 1: Task.WhenAll (नॉन-ब्लॉकिंग)

static async Task Main(string[] args)
{
    Task task1 = Task.Run(() =>
    {
        for (var i = 0; i < 5; i++)
        {
            Console.WriteLine("Task 1 - iteration {0}", i);
            await Task.Delay(1000); // async delay
        }
        Console.WriteLine("Task 1 complete");
    });

    Task task2 = Task.Run(() =>
    {
        for (var i = 0; i < 5; i++)
        {
            Console.WriteLine("Task 2 - iteration {0}", i);
            await Task.Delay(1000);
        }
        Console.WriteLine("Task 2 complete");
    });

    Console.WriteLine("Waiting for tasks to complete.");
    await Task.WhenAll(task1, task2); // नॉन-ब्लॉकिंग अवेट
    Console.WriteLine("Both Tasks Completed.");
    Console.ReadLine();
}

आउटपुट (WhenAll - नॉन-ब्लॉकिंग)

Waiting for tasks to complete.
Both Tasks Completed.        <-- तुरंत प्रिंट होता है (ब्लॉक नहीं करता)
Task 1 - iteration 0
Task 2 - iteration 0
Task 2 - iteration 1
Task 2 - iteration 2
Task 2 - iteration 3
Task 1 - iteration 1
Task 1 - iteration 2
Task 1 - iteration 3
Task 1 - iteration 4
Task 1 complete
Task 2 - iteration 4
Task 2 complete

उदाहरण 2: Task.WaitAll (ब्लॉकिंग)

static void Main(string[] args)
{
    Task task1 = Task.Run(() =>
    {
        for (var i = 0; i < 5; i++)
        {
            Console.WriteLine("Task 1 - iteration {0}", i);
            Task.Delay(1000).Wait(); // सिंक्रोनस वेट
        }
        Console.WriteLine("Task 1 complete");
    });

    Task task2 = Task.Run(() =>
    {
        for (var i = 0; i < 5; i++)
        {
            Console.WriteLine("Task 2 - iteration {0}", i);
            Task.Delay(1000).Wait();
        }
        Console.WriteLine("Task 2 complete");
    });

    task1.Start();
    task2.Start();

    Console.WriteLine("Waiting for tasks to complete.");
    Task.WaitAll(task1, task2); // करंट थ्रेड को ब्लॉक करता है
    Console.WriteLine("Both Tasks Completed."); // सभी टास्क पूरे होने के बाद प्रिंट होता है
    Console.ReadLine();
}

आउटपुट (WaitAll - ब्लॉकिंग)

Waiting for tasks to complete.
Task 1 - iteration 0
Task 2 - iteration 0
Task 1 - iteration 1
Task 1 - iteration 2
Task 1 - iteration 3
Task 1 - iteration 4
Task 1 complete
Task 2 - iteration 1
Task 2 - iteration 2
Task 2 - iteration 3
Task 2 - iteration 4
Task 2 complete
Both Tasks Completed.        <-- अंत में प्रिंट होता है (ब्लॉक करता है)

तुलना तालिका

विशेषताTask.WhenAllTask.WaitAll
ब्लॉकिंगनहीं (टास्क लौटाता है)हाँ (थ्रेड ब्लॉक करता है)
रिटर्न टाइपTaskvoid
उपयोगasync/await के साथसिंक्रोनस कोड में
डेडलॉक जोखिमकमउच्च (UI थ्रेड में)
एक्सेप्शन हैंडलिंगawait के साथ try/catchtry/catch में AggregateException

सर्वोत्तम अभ्यास

  • ASP.NET Core / UI एप्लिकेशन में Task.WhenAll + await का उपयोग करें
  • कंसोल एप्लिकेशन के Main में Task.WaitAll स्वीकार्य है
  • Task.Run का उपयोग करके टास्क्स शुरू करें, new Task(...).Start() के बजाय
  • हमेशा Task.Delay के साथ await का उपयोग करें, .Wait() के बजाय
  1. एंड्रॉइड पर कई फेसबुक अकाउंट्स को आसानी से प्रबंधित करें: पूर्ण सेटअप गाइड एंड्रॉइड पर कई फेसबुक अकाउंट्स को आसानी से प्रबंधित करें: पूर्ण सेटअप गाइड

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

  1. जीमेल टास्क मास्टर करें: अपनी टू-डू लिस्ट बनाएं, व्यवस्थित करें और प्रबंधित करें जीमेल टास्क मास्टर करें: अपनी टू-डू लिस्ट बनाएं, व्यवस्थित करें और प्रबंधित करें

    लोग अक्सर टास्क और रिमाइंडर बनाने और प्रबंधित करने के लिए थर्ड-पार्टी टूल्स का उपयोग करते थे। हर ऐप स्टोर पर सैकड़ों वेब और मोबाइल एप्लिकेशन उपलब्ध हैं जो ऐसा कर सकते हैं। और प्रत्येक दूसरे की तुलना में काम को सही ढंग से करने में बेहतर है। हालांकि, जब ईमेल क्लाइंट की बात आती है, तो टास्क बनाने और प

  1. Windows टास्क ऑटोमेशन में मास्टर करें: चरण-दर-चरण गाइड Windows टास्क ऑटोमेशन में मास्टर करें: चरण-दर-चरण गाइड

    कई लोगों के लिए, एक लैपटॉप या डेस्कटॉप पीसी एक अनिवार्य उपकरण है। चाहे वह काम पूरा करना हो, परिवार और दोस्तों के संपर्क में रहना हो या लंबे दिन के अंत में स्विच ऑफ करना हो, Windows चलाने वाला डिवाइस यह सब कर सकता है। सब कुछ सुचारू रूप से चलाने में मदद करने के लिए, Windows पृष्ठभूमि में कई रखरखाव का