मैं जहां मैं अपने आधार नियंत्रक के OnActionExecuting()
विधि ओवरराइड मेरी धागा संस्कृति स्थापित करने के लिए एक MVC अनुप्रयोग है अगर हम थ्रेड पूल में संशोधित हैं, तो थ्रेड पूल में संशोधित किया गया है, और एक नया धागा भेजा जाता है जब एसिंक कार्य पूरा हो जाता है? मुझे कोई गठिया पता होना चाहिए?Asynchrony और धागा संस्कृति
उत्तर
एक प्रमुख पकड़ लिया await task.ConfigureAwait(false)
पद्धति का उपयोग कर किया जा सकता है, जो अक्सर मृतकों के खिलाफ एक आसान (लेकिन गलत) उपाय के रूप में दुरुपयोग किया जाता है। इस तरह, निरंतरता सिंक्रनाइज़ेशन संदर्भ के बिना पूल थ्रेड पर होती है। इस मामले में, CurrentCulture
प्रवाह नहीं किया जाएगा, क्योंकि it doesn't get flowed as a part of ExecutionContext
। इससे भी बदतर, आप Task.Run(lambda)
का उपयोग कर रहे हैं (जो आमतौर पर आपको एएसपी.NET एप्लिकेशन में नहीं होना चाहिए)। lambda
के अंदर कोड में सही CurrentCulture
नहीं होगा।
अन्यथा, AspNetSynchronizationContext
await
निरंतरता में सही ढंग से CurrentCulture
प्रवाह करेगा, भले ही वे विभिन्न धागे पर हों।
लंबे समय तक नहीं देखिए :) –
@YuvalItzchakov, वास्तव में :) मेरा नवजात शिशु जोर देता है कि मुझे एसओ की तुलना में उसके साथ और अधिक लटका देना चाहिए :) – Noseratio
बधाई !! निश्चित रूप से एक प्राथमिकता परिवर्तक;) –
संक्षेप में, हाँ ASP.NET को SynchronizationContext
के माध्यम से आपके एसिंक्रोनस ऑपरेशंस में संस्कृति जैसी चीज़ों को प्रवाह करने के लिए कॉन्फ़िगर किया गया है। आप यह कैसे काम करता है MSDN पर के बारे में थोड़ा पढ़ सकते हैं: https://msdn.microsoft.com/en-us/magazine/gg598924.aspx
कुछ पहचान से संबंधित gotchas है कि आप इस तो सवाल पर के बारे में पढ़ सकते हैं कर रहे हैं: Using ASP.NET Web API, my ExecutionContext isn't flowing in async actions
- 1. सी # पृष्ठभूमिवर्कर की संस्कृति
- 2. ASP.NET मिडिलवेयर संस्कृति अब और
- 3. वर्तमान संस्कृति
- 4. स्ट्रिंग संस्कृति
- 5. QueryPerformanceCounter और धागा सुरक्षा
- 6. लेबल और टेक्स्टब्लॉक के बीच संस्कृति अंतर
- 7. संस्कृति और रेगियनइन्फोइल्डर मौजूद नहीं है
- 8. rxjava और clojure asynchrony रहस्य: वायदा वादे और एजेंट, ओह मेरे
- 9. अंतर है, और एक धागा
- 10. नया धागा() और कूड़ा संग्रह
- 11. एंड्रॉयड सेवा और यूआई धागा
- 12. स्थानीय चर और धागा सुरक्षा
- 13. क्यूटी टाइमर एक और धागा
- 14. RxJava: प्रत्यक्ष और डिफ़ॉल्ट धागा
- 15. जावा: टाइमर और धागा यह
- 16. टूलटिप संस्कृति गलत है
- 17. .NET - संस्कृति से संस्कृति का नाम प्राप्त करें
- 18. संस्कृति को fr-ca
- 19. Invariant संस्कृति क्या है?
- 20. पार्सिंग संस्कृति की जानकारी
- 21. जांचें कि वर्तमान धागा मुख्य धागा है
- 22. .NET असेंबली संस्कृति क्या है?
- 23. प्रक्रिया। स्टार्ट निर्दिष्ट करें संस्कृति
- 24. डिफ़ॉल्ट संस्कृति को .NET अनुप्रयोग
- 25. DateTime.Parse: अपवाद है जब संस्कृति
- 26. जावा इनवेरिएंट संस्कृति के समतुल्य
- 27. नया धागा
- 28. नया धागा()
- 29. धागा तुल्यकालन
- 30. एक धागा
क्या उस थ्रेड द्वारा अगली अनुरोध को संभालने का अगला अनुरोध 'ऑनएक्शन एक्सेलिंग' के माध्यम से भी नहीं होगा? –
@ LasseV.Karlsen प्रत्येक अनुरोध को 'ऑनएक्शन एक्सेलिंग' निष्पादित करना चाहिए, लेकिन प्रत्येक अनुरोध एकाधिक थ्रेड द्वारा सर्विस नहीं किया जा सकता है? यदि मेरे डेटा एक्सेस लेयर में मैं डेटाबेस के साथ संवाद करने के लिए एक एसिंक्रोनस मॉडल का उपयोग करता हूं, तो मुझे अनुरोध के दौरान दो अलग-अलग धागे नहीं मिल सकते हैं, जहां संस्कृति को संशोधित किया गया है, दूसरा जहां यह नहीं है? –
ऐसा लगता है, इस बारे में पर्याप्त जानकारी नहीं है, क्षमा करें। कोई भी मौका आप .NET 4.5 का उपयोग कर रहे हैं? यदि ऐसा है, तो [CultureInfo.DefaultThreadCurrentCulture] पर एक नज़र डालें (https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.defaultthreadcurrentculture%28v=vs.110%29.aspx) –