Szia Hijaszu! Érdekes felvetés, de tudomásom szerint menedzselt memóriakezelésű környezetben ilyen alacsony szintű felügyelést nem lehet csinálni. Amikor C++-ban egy auto_ptr-rel burkolt hivatkozás kikerül a scope-ból, akkor determinisztikusan meghívódik a burkoló destruktora, vagyis le tudod kezelni ezt az eseményt. A Garbage Collector ugye ezzel szemben indeterminisztikusra van tervezve, pont azért, mert ha nem indokolt, akkor nem törődik a memória felszabadításával. (a számítási teljesítmény javítása miatt) Az én ötletem az lett volna, hogy elindulok az IDisposable interfész irányába, és a Dispose() metódusba valamilyen globális osztálynak szólok, hogy az objektum felszabadította magát. Csakhogy ez nem referenciaszámlálás, hanem explicit fel- és leregisztráció valami központi nyilvántartásba, a célod pedig nem ez volt, ez így túl "bürokratikus". :) Jóllehet C#-ban is meg tudsz adni destruktort (vagy akár Finalize()-ot), de amennyiben egy központi (statikus) helyen mindig ott csücsül egy referencia a számlált objektumra, azt sohasem fogja összegereblyézni a GC. Ha magasabb szinten képzelted a dolgot, akkor viszont ajánlható egy design pattern a problémára. Mert ha pl. az asztali alkalmazás User Interface-én keresztül globálisan értesülni akarsz különféle modellbeli eseményekről, akkor az MVC/P architekturális tervminta felhasználható ilyen célra. Szabad megtudni, milyen megfontolásból akarsz saját referencia számlálót írni? pody -----Original Message----- From: eaf-bounce@xxxxxxxxxxxxx [mailto:eaf-bounce@xxxxxxxxxxxxx] On Behalf Of Zimler Attila Tamas Sent: Wednesday, May 07, 2008 9:32 PM To: eaf@xxxxxxxxxxxxx Subject: [eaf] Referencia számlálás Sziasztok, Van valakinek ötlete hogyan lehetne implementálni referencia számlálást C# nyelven? :) Hasonlóra gondolok, mint a C++-ban az auto_ptr :) H. -- Az eletben vannak szabalyok Nehanyat meg lehet kerulni, a tobbit pedig meg lehet szegni (The Matrix) -----BEGIN PGP PUBLIC KEY BLOCK----- Version: OpenKeyServer v1.2 Comment: Extracted from belgium.keyserver.net mQGiBEE/HTYRBACInacMGc8B/lkX3CXh5D9wUDlmza4hoatNZjJmWNnPWC9c0h2V Pi9zYJ1bVqeUnNDzCRpovPdwrswWvb9WpVOS0A7TafzWxCYud6gN8g5KiC7cSuJV cxI0uv3jWSjUkLnECqTpm9piM4WptXrdFLxUyrKPu+Nl82QSjfdbB+8xXwCg+rWO KeOZZGGGIYWu+rZ0M/MqyCUD/jqQVc7alF8+5y//zNDml3THTc3ljK8CLcHxFv6F uADmvHSePRTR1ACBV3dTxL8awvanRsXC25LOuYgM1hF9RRwof59xNtXVttvo724b FDR+oRDVKyoEm6Istfn9xbbNqRqPfk83SHvect/hlHsfgaTBKd+IRAEkbMIdRin/ E45fA/0bzklqLGj4a8qSxMMvZ1Ib+2RmH5I6o9o33FY3Nmc7IEXJizyTyQaASYCx ldjuRmfWSOP3gQRrH5owuZq5KBCC/PNMNnUsA4noFmvIilA/9UYqMtQ0BNr+miIM 9/LV70ZbBHVpDLjb2baMjbKrmCFf9rjlc17fFsWk5ZJuE3/UxLQrWmltbGVyIEF0 dGlsYSBUYW3DoXMgPGhpamFzenVAaGxmc2xpbnV4Lmh1PohXBBMRAgAXBQJBPx02 BQsHCgMEAxUDAgMWAgECF4AACgkQ+3OFVYni0PSysACffD6VDtoer3aBe8Gpvn8e gwiNNH8AmwcmBIrZeCOeobIuZZp3CCOgQblIuQENBEE/HTkQBACKNzv7gS0fgeiO AMoss2bbO7X9GuO3ufc3+zx2yGV7SvYAuyWLOSMhs1ZYBVp6IawDY88zEx81oxRj Jd4zO8h/3BI9cmjZ4NAmdv7lWjTs0I0ijFnemcFQaffxN8vIB9DqA4oyJ0A/bS7J 0E/i13sr7hRgB6NZbpy4PSSkczggvwADBQP8D3eakqeJHf1yLmw1XmQVDxHLxtrI VL0TShFEfMGU/MLfKpcmrd43EsSondsNNm8jv4b9Y/Wgc8XPQQrfPodC5mKt8mQC F/ovWBFs46YvhS5pojQmp6i9octTWw2OqVn3QgrBFqm4QvayLE9wRLm/xgaFApVI 4RiOOEA6SidURGCIRgQYEQIABgUCQT8dOQAKCRD7c4VVieLQ9HoZAJ4xR5Y1qlnC LTn1GkbEW0Va+72EqwCfQTP37ylZGrvpYnFoewBIMuLFHM8= =K0/l -----END PGP PUBLIC KEY BLOCK-----