C# में एसिंक्रोनस प्रोग्रामिंग का परिचय
एसिंक्रोनस प्रोग्रामिंग C# में आधुनिक विकास की प्रमुख अवधारणाओं में से एक है। यह आपके एप्लिकेशन को फ़ाइल पढ़ने, डेटाबेस क्वेरी या HTTP कॉल जैसे लंबे संचालन की प्रतीक्षा करते समय मुख्य निष्पादन थ्रेड को ब्लॉक नहीं करने देता है। ऑपरेशन पूरा होने की प्रतीक्षा करने के बजाय, प्रोग्राम अन्य कार्य करना जारी रख सकता है, जिससे एप्लिकेशन अधिक प्रतिक्रियाशील और कुशल बनते हैं।
इस गाइड में, हम शुरुआती लोगों के लिए C# में एसिंक्रोनस प्रोग्रामिंग की मूल बातें समझेंगे। आप जानेंगे कि async और await कीवर्ड क्या हैं, Task क्लास के साथ कैसे काम करें, और व्यावहारिक कोड उदाहरण देखेंगे। भले ही आप .NET में अपनी यात्रा शुरू कर रहे हों, यह सामग्री आपको अपने प्रोजेक्ट्स में आत्मविश्वास से एसिंक्रोनसिटी का उपयोग करने में मदद करेगी।
एसिंक्रोनसिटी इतनी महत्वपूर्ण क्यों है? कल्पना करें कि आपके एप्लिकेशन को सर्वर से डेटा लोड करना है। सिंक्रोनस मोड में, लोडिंग पूरी होने तक यूज़र इंटरफ़ेस "फ्रीज़" हो जाएगा। एसिंक्रोनस दृष्टिकोण इस समस्या को हल करता है: इंटरफ़ेस सक्रिय रहता है, और डेटा पृष्ठभूमि में लोड होता है।
मूल अवधारणाएँ: async, await और Task
Task क्या है?
C# में, एसिंक्रोनस संचालन Task क्लास (या मान वापस करने के लिए Task<TResult>) द्वारा दर्शाए जाते हैं। Task भविष्य में कार्य करने का एक वादा है। यह एसिंक्रोनस ऑपरेशन की स्थिति को समाहित करता है और इसके पूरा होने को ट्रैक करने की अनुमति देता है।
कार्य बनाने का एक सरल उदाहरण:
using System;using System.Threading.Tasks;
class Program{ static void Main() { // एक कार्य बनाएँ जो सिंक्रोनस रूप से निष्पादित होता है Task task = Task.Run(() => { Console.WriteLine("कार्य पृष्ठभूमि में निष्पादित हो रहा है"); });
task.Wait(); // कार्य पूरा होने की प्रतीक्षा करें }}async और await कीवर्ड
async कीवर्ड कंपाइलर को बताता है कि मेथड में एसिंक्रोनस कोड है। await कीवर्ड अपेक्षित कार्य पूरा होने तक मेथड के निष्पादन को रोकता है, बिना थ्रेड को ब्लॉक किए।
एक महत्वपूर्ण नियम: async से चिह्नित मेथड को Task, Task<T> या void (इवेंट हैंडलर के लिए) वापस करना चाहिए।
मूल उदाहरण:
using System;using System.Threading.Tasks;
class Program{ static async Task Main(string[] args) { Console.WriteLine("कार्य शुरू"); // एसिंक्रोनस कॉल await PerformLongOperationAsync(); Console.WriteLine("कार्य पूरा"); }
static async Task PerformLongOperationAsync() { Console.WriteLine("लंबा ऑपरेशन शुरू..."); // विलंब का अनुकरण (जैसे, HTTP अनुरोध) await Task.Delay(2000); Console.WriteLine("ऑपरेशन पूरा"); }}ध्यान दें: await Task.Delay(2000) का उपयोग करने पर थ्रेड 2 सेकंड के लिए ब्लॉक नहीं होता है। इसके बजाय, नियंत्रण कॉल करने वाले कोड पर वापस आ जाता है, और 2 सेकंड बाद निष्पादन इस बिंदु से जारी रहता है।
एसिंक्रोनस संचालन के व्यावहारिक उदाहरण
एसिंक्रोनस फ़ाइल पढ़ना
सबसे सामान्य परिदृश्यों में से एक फ़ाइलों के साथ काम करना है। .NET में इनपुट-आउटपुट के लिए अंतर्निहित एसिंक्रोनस मेथड हैं:
using System;using System.IO;using System.Threading.Tasks;
class FileExample{ public static async Task ReadFileAsync(string filePath) { using (StreamReader reader = new StreamReader(filePath)) { string content = await reader.ReadToEndAsync(); Console.WriteLine(content); } }
static async Task Main() { string path = "example.txt"; // एक परीक्षण फ़ाइल बनाएँ await File.WriteAllTextAs