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

C# में Async और Await कीवर्ड का उपयोग करके एसिंक्रोनस प्रोग्रामिंग


C# में एसिंक्रोनस प्रोग्रामिंग उन गतिविधियों के प्रति एक कुशल दृष्टिकोण है जो ब्लॉक होती हैं या जिनकी एक्सेस में देरी होती है। यदि कोई गतिविधि सिंक्रोनस प्रक्रिया में इस तरह ब्लॉक होती है, तो पूरा एप्लिकेशन इंतजार करता है और इसमें अधिक समय लगता है। एप्लिकेशन प्रतिक्रिया देना बंद कर देता है। एसिंक्रोनस दृष्टिकोण का उपयोग करके, एप्लिकेशन अन्य कार्यों के साथ भी जारी रह सकता है।

C# में async और await कीवर्ड्स एसिंक्रोनस प्रोग्रामिंग में उपयोग किए जाते हैं। इनका उपयोग करके, आप .NET Framework संसाधनों, .NET Core आदि के साथ काम कर सकते हैं। Async कीवर्ड का उपयोग करके परिभाषित एसिंक्रोनस मेथड्स को async मेथड्स कहा जाता है।

GUI वाले एप्लिकेशन में, क्यू की सामग्री की जांच की जाती है और यदि कोई अनप्रोसेस्ड टास्क है, तो उसे पहले निकालकर प्रोसेस किया जाता है। कोड सिंक्रोनसली निष्पादित होता है और अनप्रोसेस्ड टास्क पहले पूरा होता है। यदि प्रोसेसिंग में अपेक्षा से अधिक समय लगता है तो एप्लिकेशन "स्टॉप रिस्पॉन्डिंग" संदेश दिखाएगा।

आइए देखें कि ऊपर क्या चर्चा की गई है:

// सिंक्रोनस - UI ब्लॉक करता है
private void OnRequestDownload(object sender, RoutedEventArgs e)
{
    var req = HttpWebRequest.Create(_requestedUri);
    var res = req.GetResponse(); // ब्लॉकिंग कॉल
}

उपरोक्त समस्या को हल करने के लिए, async और await कीवर्ड्स का उपयोग करें:

// एसिंक्रोनस - UI रिस्पॉन्सिव रहता है
private async void OnRequestDownload(object sender, RoutedEventArgs e)
{
    var req = HttpWebRequest.Create(_requestedUri);
    var res = await req.GetResponseAsync(); // नॉन-ब्लॉकिंग
}

मुख्य अवधारणाएं

  • async: मेथड को एसिंक्रोनस के रूप में चिह्नित करता है, Task या Task<T> रिटर्न करता है
  • await: टास्क पूरा होने तक निष्पादन रोकता है, थ्रेड को ब्लॉक नहीं करता
  • Task: चल रहे ऑपरेशन का प्रतिनिधित्व करता है
  • Task<T>: परिणाम लौटाने वाले ऑपरेशन का प्रतिनिधित्व करता है

लाभ

  • UI रिस्पॉन्सिवनेस बनी रहती है
  • बेहतर संसाधन उपयोग (थ्रेड ब्लॉक नहीं होते)
  • स्केलेबिलिटी में सुधार (सर्वर एप्लिकेशन्स के लिए)
  • कोड पठनीयता - सिंक्रोनस जैसा दिखता है

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

  • async void केवल इवेंट हैंडलर्स के लिए उपयोग करें
  • अन्य सभी मामलों में Task या Task<T> रिटर्न करें
  • .ConfigureAwait(false) का उपयोग लाइब्रेरी कोड में करें
  • ब्लॉकिंग कॉल्स (.Result, .Wait()) से बचें
  1. C# और Selenium: एलिमेंट मौजूद होने तक प्रतीक्षा करें C# और Selenium: एलिमेंट मौजूद होने तक प्रतीक्षा करें

    हम Selenium WebDriver में एलिमेंट मौजूद होने तक एक्सप्लिसिट वेट का उपयोग करके प्रतीक्षा कर सकते हैं। यह मुख्य रूप से तब उपयोग किया जाता है जब किसी एलिमेंट के पेज पर उपलब्ध होने के लिए सिंक्रनाइज़ेशन समस्या होती है।WebDriverWait और ExpectedCondition क्लासेस का उपयोग एक्सप्लिसिट वेट कार्यान्वयन के लिए

  1. मैक पर Python 3 को अपग्रेड और उपयोग करना मैक पर Python 3 को अपग्रेड और उपयोग करना

    आप सोच सकते हैं कि आपके बिल्कुल नए मैक में सभी प्रासंगिक सॉफ़्टवेयर का नवीनतम संस्करण है। अधिकांश यूज़र ऐप्स के लिए, आप सही होंगे, लेकिन अंतर्निहित फ्रेमवर्क के लिए यह एक अलग कहानी है। नए मैक अभी भी Python 2.7.10 के साथ शिप होते हैं, भले ही सबसे हालिया स्थिर रिलीज़ Python 3.5 है। यदि यह संस्करणों क

  1. वर्डप्रेस में JavaScript को कुशलतापूर्वक डिफर करें: Defer और Async तकनीकों से गति बढ़ाएं वर्डप्रेस में JavaScript को कुशलतापूर्वक डिफर करें: Defer और Async तकनीकों से गति बढ़ाएं

    तेजी से लोड होने वाली वर्डप्रेस साइटें विज़िटर के लिए उपयोगकर्ता अनुभव को बढ़ाने, खोज इंजन पर आपकी वेबसाइट की दृश्यता में सुधार करने, और आपकी साइट के ऑर्गेनिक ट्रैफ़िक को बढ़ाने के मामले में गंभीर लाभ देती हैं। एक वेब पेज में HTML, CSS, JavaScript, और चित्र होते हैं, और पेज लोड समय को कम करने के लि