C# में एसिंक्रोनस प्रोग्रामिंग: उदाहरणों के साथ पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C# में एसिंक्रोनस प्रोग्रामिंग का परिचय



एसिंक्रोनस प्रोग्रामिंग C# में आधुनिक डेवलपमेंट की प्रमुख अवधारणाओं में से एक है। उच्च-लोड वेब एप्लिकेशन, माइक्रोसर्विसेज और क्लाउड समाधानों के युग में, एसिंक्रोनसिटी के साथ प्रभावी ढंग से काम करने की क्षमता प्रत्येक .NET डेवलपर के लिए एक अनिवार्य कौशल बन गई है।



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



इस लेख में हम समझेंगे:

  • C# में async/await की मूल बातें
  • Task क्लास के साथ काम करना
  • एसिंक्रोनस मेथड लिखने के नियम
  • सामान्य गलतियाँ और उनसे बचने के तरीके


C# में async/await की मूल बातें



C# में एसिंक्रोनस प्रोग्रामिंग की मुख्य पैराडाइम दो प्रमुख कीवर्ड पर आधारित है: async और await। इन्हें C# 5.0 में पेश किया गया था और तब से ये एसिंक्रोनसिटी के साथ काम करने के लिए मानक बन गए हैं।



async/await कैसे काम करता है



कीवर्ड async का उपयोग एसिंक्रोनस मेथड घोषित करने के लिए किया जाता है। await को किसी Task पर लागू किया जाता है ताकि उसके पूरा होने तक मेथड के निष्पादन को रोका जा सके, बिना वर्तमान थ्रेड को ब्लॉक किए।



public async Task<string> GetDataAsync(){    // एसिंक्रोनस HTTP अनुरोध का अनुकरण    using var client = new HttpClient();    string result = await client.GetStringAsync("https://api.example.com/data");    return result;}

public async Task ProcessAsync(){ string data = await GetDataAsync(); Console.WriteLine($"डेटा प्राप्त हुआ: {data}");}


यह समझना महत्वपूर्ण है: await थ्रेड को ब्लॉक नहीं करता है। यह कॉल करने वाले कोड को नियंत्रण सौंपता है, और जब Task पूरा हो जाता है, तो मेथड उसी स्थान से निष्पादन जारी रखता है।



एसिंक्रोनस मेथड के रिटर्न प्रकार



एसिंक्रोनस मेथड तीन प्रकारों में से एक लौटा सकता है:

  • Task — उन मेथड के लिए जो मान नहीं लौटाते
  • Task<T> — उन मेथड के लिए जो T प्रकार का मान लौटाते हैं
  • ValueTask<T> — उच्च प्रदर्शन वाले परिदृश्यों के लिए जब परिणाम अक्सर सिंक्रोनस रूप से उपलब्ध होता है


// बिना रिटर्न वैल्यू केpublic async Task SaveDataAsync(string data){    await File.WriteAllTextAsync("data.txt", data);}

// रिटर्न वैल्यू के साथpublic async Task<int> CalculateSumAsync(int a, int b){ await Task.Delay(100); // लंबी अवधि के संचालन का अनुकरण return a + b;}

// ऑप्टिमाइजेशन के लिए ValueTaskpublic async ValueTask<bool> CheckCacheAsync(string key){ if (_cache.ContainsKey(key)) return true; await Task.Delay(50); return false;}


Task के साथ उन्नत कार्य



Task क्लास C# में एसिंक्रोनस प्रोग्रामिंग का आधार है। आइए सबसे उपयोगी मेथड और पैटर्न देखें।



कार्यों का समानांतर निष्पादन



Task.WhenAll और Task.WhenAny मेथड कई एसिंक्रोनस संचालनों को प्रभावी ढंग से प्रबंधित करने की अनुमति देते हैं।



public async Task ProcessMultipleRequestsAsync(){    var task1 = FetchDataAsync("url1");    var task2 = FetchDataAsync("url2");    var task3 = FetchDataAsync("url3");        // सभी कार्यों के पूरा होने की प्रतीक्षा    await Task.WhenAll(task1, task2, task3);        Console.WriteLine("सभी अनुरोध पूरे हो गए");}

public async Task<string> GetFirstResponseAsync(){ var task1 = FetchDataAsync("url1"); var task2 = FetchDataAsync("url2"); // पहले पूरे होने वाले कार्य की प्रतीक्षा Task<string> completedTask = await Task.WhenAny(task1, task2); return await completedTask;}


एसिंक्रोनस संचालन को रद्द करना

ब्लॉग

पुस्तक अनुशंसाएँ