मैं कठिन रास्ता है कि एक पूल धागे से Task.Wait बुला धागे की भुखमरी गतिरोध का कारण बन सकता सीखा है।कार्य करना चाहिए। प्रतीक्षा बहिष्कृत की जानी चाहिए?
this MSDN article के अनुसार, अध्याय 'गतिरोध' में, हम इन दो नियमों का पालन करना चाहिए:
- , किसी भी वर्ग जिसका तुल्यकालिक तरीकों अतुल्यकालिक कार्यों के लिए इंतजार नहीं बना है के बाद से इस वर्ग पर एक धागे से कहा जा सकता है तालाब। वर्ग ब्लॉक अतुल्यकालिक कार्यों के लिए इंतजार करता है, तो
- एक अतुल्यकालिक समारोह के अंदर किसी भी वर्ग का प्रयोग न करें।
ऐसा लगता है केवल जगह Task.Wait के एक वैध उपयोग के लिए छोड़ दिया है मुख्य कार्य है - मैं यहाँ एक सा अतिशयोक्ति रहा हूँ, लेकिन आप विचार मिलता है।
क्यों Task.Wait अभी भी नेट ढांचे का हिस्सा है, देखकर यह कितना खतरनाक है?
मैं सहमत नहीं है कि लोगों को ठीक से कि विशेष मामले में दस्तावेज़ पढ़ नहीं है। दस्तावेज का विशाल बहुमत भ्रामक है और लोगों को विश्वास है कि कार्य को बुलाए जाने में कुछ भी गलत नहीं है। प्रतीक्षा करें, कार्य करें। किसी के अपने पैर को शूट करने के लिए कई अन्य अलग-अलग तरीके। – ZunTzu
@ZunTzu प्रलेखन द्वारा मैं केवल एमएसडीएन का जिक्र नहीं कर रहा हूं। बस 'टास्क। प्रतीक्षा करें' [मैचों को लाता है] (http://stackoverflow.com/questions/13140523/await-vs-task-wait-deadlock) जो स्पष्ट रूप से आपको एसिंक कोड पर अवरुद्ध न करने के लिए कहता है। अधिक से अधिक, async-await के बारे में सीखने के लिए प्रयोग और पढ़ने की आवश्यकता होती है, और ऐसे कई ब्लॉग-पोस्ट हैं जो वास्तव में उन डेडलॉक परिदृश्यों का वर्णन करते हैं। यह जानना उपयोगकर्ता की ज़िम्मेदारी है कि वह क्या उपयोग कर रहा है और इसका उपयोग कैसे किया जाना चाहिए। मैं * सहमत हूं * एमएसडीएन दस्तावेज़ों में एसिंक ऑपरेशंस पर सिंक्रनाइज़ रूप से अवरुद्ध होने के खतरनाक खतरे के बारे में पर्याप्त जानकारी नहीं है। –
प्रलेखन खतरों के बारे में अधिक स्पष्ट होना चाहिए, उदाहरण के लिए यह Thread.Abort के लिए करता है। – ZunTzu