जब हम एएसपी.नेट वेब एपीआई में कुछ एक्स्टेंसिबिलिटी पॉइंट्स से निपट रहे हैं, तो हम टीएपी (टास्क-आधारित प्रोग्रामिंग पैटर्न) से भी निपटते हैं। कुछ बिंदुओं पर, हम ContinueWith
के साथ एसिंक विधि को निरंतर प्रदान करना चाहते हैं और हम प्रतिनिधि के अंदर कुछ सामान करते हैं जिसे हम ContinueWith
पर पास करते हैं।सिंक्रनाइज़ेशन कॉन्टेक्स्ट और एएसपी.नेट वेब एपीआई एक्सटेंसिबिलिटी पॉइंट्स
ब्रैड विल्सन ने गहराई से here समझाया कि जब हम निरंतरता प्रदान करते हैं तो सिंक्रनाइज़ेशन कॉन्टेक्स्ट महत्वपूर्ण है। मेरे लिए, एकमात्र जगह जहां मुझे SynchronizationContext
पर एएसपी.NET वेब एपीआई में वापस जाने की आवश्यकता है वह जगह है जहां मुझे HttpContext.Current
(जो कुछ है जो मैं कभी भी एएसपी.नेट वेब एपीआई एप्लिकेशन में नहीं करता) के साथ खेलना चाहता हूं और वह जगह जहां मुझे Thread.CurrentPrincipal
जैसे थ्रेड के लिए कुछ जानकारी सेट करने की आवश्यकता है।
तो सवाल यह है कि: क्या हम कभी भी SynchronizationContext
पर वापस जाना चाहते हैं जब हम संदेश हैंडलर, फ़िल्टर, फॉर्मेटर्स इत्यादि जैसे कुछ विस्तारशील बिंदुओं में निरंतरता प्रदान करते हैं?
उत्तर के लिए धन्यवाद! मुझे लगता है कि आपने एएसपी.नेट एमवीसी के साथ सवाल मिश्रित किया है। आइए मान लें कि आप एएसपी.नेट होस्ट के अंतर्गत नहीं हैं। फिर, आपके पास HttpContext नहीं होगा। इसलिए, विस्तारशीलता बिंदु उन लोगों के साथ कसकर नहीं मिलते हैं। – tugberk
@tugberk उत्तर अभी भी वही है, वास्तव में; यदि आपके पास किसी विशेष संदर्भ से जुड़ा हुआ कुछ है, और फिर एसिंक जाना चाहते हैं, तो आप वास्तव में संदर्भ से मूल्यों की प्रतिलिपि बनाना सुनिश्चित करना चाहते हैं (या सुनिश्चित करें कि आप * संदर्भ में वापस * पहुंच प्राप्त कर सकते हैं) कि आप प्रसंस्करण की आवश्यकता होगी। – casperOne
समस्या यह है कि: वेब एपीआई में, आपके पास लगभग कोई संदर्भ नहीं है। आप थ्रेड के माध्यम से किए गए वेरिएबल्स के अंदर संदर्भ कर सकते हैं + फ्रेमवर्क आधारभूत संरचना हमेशा आपको सिंक संदर्भ में वापस ले जाती है यदि आप स्रोत कोड देखते हैं। यही कारण है कि आपका उत्तर लागू नहीं है। – tugberk