sql server - SqlConnection.OpenAsync() hangs when there are no active connections -
जब मैं इसे चलाता हूँ:
का उपयोग कर (SqlConnection कनेक्शन = नया SqlConnection (connectionString)) {कनेक्शन का इंतजार करें। ओपनएसिंक (); }
यह कनेक्शन पर लटका हुआ है। ओपनएसिंक ()
लाइन
यदि मैं एसक्यूएल सर्वर मैनेजमेंट स्टूडियो में देखता हूं कि डेटाबेस के लिए कितने कनेक्शंस सक्रिय हैं, तो केवल एक ही है: संभव है कि यह कोड उपयोग करता है इसलिए, मुझे यकीन नहीं है कि मैं एप पूल से कनेक्शन से बाहर चल रहा हूं।
मैं क्या कर रहा हूँ गलत?
समस्या कनेक्शन पर नहीं थी सब। समस्या यह थी कि मैंने अपने धागे पर एक गतिरोध के साथ पैर में खुद को गोली मार दी। मैं connection.OpenAsync ()
को एक सिंक्रोनस कॉल रेखांकित करने की विधि को कॉल करने का प्रयास कर रहा था:
कार्य कार्य = MyAsyncMethod (); task.Wait ();
कॉल करने से task.Wait ()
मैं थ्रेड को अवरुद्ध कर रहा था जब कनेक्शन का इंतजार करता है। ओपनएसिंक ()
देता है, बाकी विधि उसी धागा पर चलना चाहती है जो मैं अभी अवरुद्ध करता हूं, इसलिए कार्य समाप्त नहीं होता है और task.Wait ()
रिटर्न कभी नहीं
समाधान:
क्योंकि मेरे async पद्धति में मुझे उस धागे को चिपकाने के लिए कुछ भी नहीं था जिसे मैंने इसे बुलाया था, मैं बस कनेक्शन का इंतजार करता था। ओपनएसिंक ()। कॉन्फ़िगरएवाइट () झूठे)
, यह विधि के शेष भाग को एक अलग थ्रेड में चलाने के लिए करता है जिसे मैं task.Wait ()
।
Comments
Post a Comment