अप्रबंधित कोड मेरे कार्यों को कॉल करता है। पहले फ़ंक्शन में मुझे अपने प्रबंधित ऑब्जेक्ट पर पॉइंटर वापस भेजना चाहिए। कभी-कभी बाद में मेरे कुछ अन्य कार्यों को पैरामीटर में से एक के रूप में उसी पॉइंटर के साथ बुलाया जाता है। मुझे इसे कम करना चाहिए और कुछ गणना करने के लिए इसका इस्तेमाल करना चाहिए और फिर यदि इसकी आवश्यकता नहीं है तो इसका निपटान करें। कहानी को कम करने के लिए मुझे उस ऑब्जेक्ट को पिन करने की आवश्यकता है ताकि जीसी इसे स्थानांतरित न करे, जब तक मैं इसका निपटान नहीं करता। सी # में ऐसा कैसे करें? अग्रिम धन्यवाद।सी # में प्रबंधित ऑब्जेक्ट में पॉइंटर कैसे पिन करें?
11
A
उत्तर
10
सी # में किसी ऑब्जेक्ट को पिन करने के लिए, आप दूसरे पैरामीटर GCHandleType.Pinned
के साथ GCHandle.Alloc
विधि का उपयोग कर सकते हैं। GCHandle
उदाहरण GCHandle.Free
विधि का उपयोग करके जारी किया गया है जब तक ऑब्जेक्ट पिन किया गया है।
कुछ कोड पोस्ट करें, अधिमानतः एक * न्यूनतम, पूर्ण * उदाहरण। –
पिन न करें। अप्रबंधित कोड के सूचक के लिए कोई उपयोग नहीं है। तो एक पॉइंटर पास न करें, 'हैंडल' पास करें। कहें, स्थिर 'सूची <> 'में एक अनुक्रमणिका। अब आप हैंडल वैल्यू से कॉलबैक में प्रबंधित संदर्भ को पुनः प्राप्त कर सकते हैं। –