मैंने कुछ स्थानों में पढ़ा है कि .GetAwaiter().GetResult();
डेडलॉक्स का कारण बन सकता है और हमें इसके बजाय async
/await
का उपयोग करना चाहिए। लेकिन मुझे कई कोड नमूने दिखाई देते हैं जहां इसका उपयोग किया जाता है। क्या इसका इस्तेमाल करना ठीक है? कौन से मामले हैं जहां यह डेडलॉक कर सकता है? क्या मुझे कुछ और उपयोग करना चाहिए, जैसे Task.Wait
?है .GetAwaiter()। GetResult(); सामान्य उपयोग के लिए सुरक्षित?
13
A
उत्तर
23
जैसा कि मैंने अपने ब्लॉग, GetAwaiter().GetResult()
can deadlock when it's used in a one-thread-at-a-time context पर वर्णन किया है। यूआई थ्रेड या एएसपी.NET संदर्भ में (प्री-कोर एएसपी.नेट के लिए) पर कॉल किया जाने पर यह आमतौर पर देखा जाता है।
Wait
समान समस्याएं हैं। उपयुक्त फिक्स await
का उपयोग करना है, और कॉलिंग कोड को एसिंक्रोनस बनाना है।
ध्यान दें कि कंसोल ऐप्स में Main
विधि इस नियम का अपवाद है; यह वहां उपयोग करने के लिए बिल्कुल उपयुक्त है। कई कोड नमूने इस तरह से इसका इस्तेमाल करते हैं।
संबंधित मुद्दे
- 1. .Wait() बनाम .GetAwaiter()। GetResult() के बीच क्या अंतर है?
- 2. Async बनाम GetAwaiter() का इंतजार है। GetResult() और कॉलबैक
- 3. सिम्फनी 2, सिद्धांत 2: getResult ऑब्जेक्ट
- 4. क्या यह आईओसी के लिए एक सामान्य उपयोग मामला है?
- 5. पायथन: सामान्य उपयोग के लिए RuntimeError स्वीकार्य है?
- 6. एक सामान्य निर्माता के लिए उपयोग केस क्या है?
- 7. क्या JSONP उपयोग करने के लिए सुरक्षित है?
- 8. क्या java.io.BufferedOutputStream उपयोग करने के लिए सुरक्षित है?
- 9. दोस्ताना-यूआरएल उपयोग के लिए एक कोलन सुरक्षित है?
- 10. shared_ptr का उपयोग करने के लिए, क्या यह सुरक्षित है?
- 11. क्या HttpClient एक साथ उपयोग करने के लिए सुरक्षित है?
- 12. बूस्ट :: बाइंड का उपयोग कर सुरक्षित सुरक्षित से अधिक तर्क पारित करने के लिए है?
- 13. क्या यह उपयोग करने के लिए एक NSString उदाहरण के खिलाफ isKindOfClass का उपयोग सुरक्षित है?
- 14. सामान्य सेटिंग्स के लिए सामान्य सेटिंग्स.सेटिंग फ़ाइल
- 15. लाइव साइट्स के लिए "सख्त" सुरक्षित है?
- 16. php: // temp उत्पादन के लिए सुरक्षित है?
- 17. क्या सी ++ एसटीएल थ्रेड-सुरक्षित कंटेनरों के लिए सुरक्षित है (एसटीएलपोर्ट कार्यान्वयन का उपयोग कर)?
- 18. AngularJs फ़िल्टरिंग के लिए यह सामान्य है
- 19. सुरक्षित सुरक्षा सुरक्षित है?
- 20. पायथन - सामान्य लिनक्स कमांड जारी करने के लिए os.system() का उपयोग करना ठीक है
- 21. vi के लिए सामान्य उपयोग के मामले क्या हैं?
- 22. सी ++ कंटेनर के लिए सामान्य उपयोग के मामले
- 23. सामान्य प्रोग्रामिंग में wchar_t के उपयोग का उपयोग क्या है?
- 24. EDT के बाहर Component.repaint() का उपयोग करने के लिए सुरक्षित?
- 25. एक डीओएम बनाना जो पढ़ने के लिए थ्रेड सुरक्षित है
- 26. सबक्लास के लिए सामान्य कोड रखने के लिए सुपरक्लास "संरक्षित अंतिम" विधियों का उपयोग
- 27. क्या सामान्य वेब उपयोग के लिए "असामान्य पढ़ें" (गंदे पढ़ने) के लिए MySQL अलगाव सेट करना सुरक्षित है? प्रतिकृति के साथ भी?
- 28. IDbConnection/IDbTransaction का उपयोग करने के लिए सुरक्षित उपयोग करने के लिए?
- 29. सामान्य तरीके से मानचित्र भरने के लिए कॉन्फ़िगरेशनप्रॉपर्टीज का उपयोग
- 30. सामान्य प्रयोजन के लिए सबवर्सन का उपयोग करना बैकअप
बहुत व्यापक, दोहराया विषय। SO –