यह MSDN here पर वर्णित सी # .NET में एसिंक्रोनस पैटर्न के बारे में एक सामान्य प्रश्न है।सी # .NET में, एक एसिंक ऑपरेशन आवश्यक रूप से एक धागा बनाता है जो ब्लॉक करता है?
जब एक लंबे चल तुल्यकालिक आपरेशन के नाम से जाना आवश्यक है (उदाहरण के लिए - WCF, डीबी क्वेरी, आईओ, आदि), और मैं धागा ब्लॉक करने के लिए नहीं करना चाहते हैं (उदाहरण के लिए - जीयूआई धागा), मतलब है कि वहां एक और धागा मौजूद होना चाहिए जो अवरुद्ध करता है?
एक तुल्यकालिक कॉल करने का यह अतुल्यकालिक जरूरी ब्लॉक करने के लिए कहीं न कहीं एक धागा की आवश्यकता होती है?
तो, यदि मैं 10 लंबे समय से चलने वाले एसिंक कॉल (जो वास्तव में 10 सिंक्रोनस कॉल हैं) करते हैं, तो वहां प्रतीक्षा करने के लिए 10 धागे होने चाहिए? या 10 धागे को अवरुद्ध होने से रोकने के लिए एक तंत्र है?
डब्ल्यूसीएफ में, आप इसे असीमित बनाने के लिए डब्ल्यूसीएफ कॉल के लिए प्रारंभ और समाप्ति विधियां बना सकते हैं। क्या इसका मतलब यह है कि जब मैं इस एसिंक्रोनस विधि को कॉल करता हूं, तो क्लाइंट या सर्वर पर कहीं भी धागा होता है, जो मेरे लिए इंतजार कर रहा है?
मैंने एसिंक्रनाइटी प्राप्त करने के लिए विभिन्न तरीकों के बारे में कई लेख पढ़े हैं, लेकिन ये लेख हुड के तहत क्या किया जाता है, यह नहीं समझाते हैं।
अद्यतन
मैं अपने प्रश्न अधिक specifc बनाया है, के बाद से मैं के बारे में नेट में रुचि अधिक रहा हूँ। MSDN द्वारा वर्णित एसिंक पैटर्न।
अद्यतन 2
मैं सवाल सुधार तुल्यकालिक कॉल अतुल्यकालिक बनाने के लिए और भी अधिक विशिष्ट होना।
महान लिंक की जांच कर सकते अधिक जानकारी के लिए के लिए Async ऑपरेशन के लिए इंतजार कर रहे किसी भी धागा होना नहीं होते। तो यह स्पष्ट रूप से ऐसा नहीं कहता है, लेकिन यह निम्न-स्तर एसिंक कॉल की तरह दिखता है, यह धागे को अवरुद्ध किए बिना किया जाता है। लेकिन अगर आप एक सिंक्रोनस कॉल async बनाना चाहते हैं, तो एक धागा बनाया जाना चाहिए। क्या मैं इस पर सही हूँ? – Mas
@ मास 'थ्रेड' बनाना इसे एसिंक बनाने का एकमात्र तरीका है। संक्षेप में संक्षेप में समझाया गया है, आपके सिंक कॉल को एसिंक कॉल में कनवर्ट करने के अन्य तरीके हैं .. – VS1
तालिका के अनुसार, सभी Async पैटर्न थ्रेड पर आधारित होते हैं (कार्य पृष्ठभूमि में धागे का भी उपयोग करते हैं)। – Mas