Garbage collector problem in C# -


सी # कोड में, मेरे पास तीन ऑब्जेक्ट हैं A , B और सी और बी प्रत्येक सी के संदर्भ को पकड़ता है जब A को नष्ट कर दिया जाता है तो मैं B से C के संदर्भ को भी हटाए जाने के लिए चाहूंगा ताकि C कचरा कलेक्टर द्वारा नष्ट किया जा सकता है

क्या इसे मैन्युअल रूप से B से हटाए बिना ऐसा करने का कोई तरीका है? ( सी से सी से हटाए जाने के संदर्भ में C के डिस्ट्रक्टर को नहीं कहा जाता है, इसलिए यह यहां प्रभावी नहीं है।)

समाधान 1

क्या बी आप में कहीं और से संदर्भित है

समाधान 2

/ P>

आपको बी को एक संकेत भेजना चाहिए जब ए "हटाया गया" होगा। यदि बी को ए से जाना जाता है तो आप ए से बी को संकेत कर सकते हैं। मैं इसके लिए एक पैटर्न का उपयोग करेगा

समाधान 3

सीधे सी से संदर्भित करने के बजाय , आप सी से निकलने के लिए बी से वीक रेफरेंस का उपयोग कर सकते हैं।


Comments