मैंने सोचा कि जीसी अंततः निपटान करेगा यदि आपका प्रोग्राम ऐसा नहीं था लेकिन आपको क्लीनअप निर्धारिती बनाने के लिए अपने प्रोग्राम में निपटान() को कॉल करना चाहिए।कचरा कलेक्टर कॉल निपटान()?
हालांकि, मेरी छोटी परीक्षण कार्यक्रम से, मैं देख रहा हूँ सब पर बुलाया हो रही निपटान नहीं है ....
public class Test : IDisposable
{
static void Main(string[] args)
{
Test s = new Test();
s = null;
GC.Collect();
Console.ReadLine();
}
public Test()
{
Console.WriteLine("Constructor");
}
public void Dispose()
{
Console.WriteLine("Dispose");
}
}
// आउटपुट बस "निर्माता", मैं नहीं मिलता है "फेंक" जैसा कि मैं उम्मीद करता हूँ। क्या हो रहा है?
संपादित करें: हाँ, मुझे पता है कि मुझे निपटान करना चाहिए() - मैं डिस्पोजेबल ऑब्जेक्ट्स का उपयोग करते समय मानक पैटर्न का पालन करता हूं। मेरा सवाल उठता है क्योंकि मैं किसी को एल्स कोड में रिसाव को ट्रैक करने की कोशिश कर रहा हूं, जिसे प्रबंधित किया जाता है सी ++ (जटिलता की एक और परत जो किसी अन्य धागे का अच्छा विषय होगा)।
पर यह अधिक विस्तृत उत्तर मिल सकते हैं यह प्रश्न [http://stackoverflow.com/questions/45036/will-the-garbage-collector-call-idisposable-dispose-for का डुप्लिकेट है -me] (http://stackoverflow.com/questions/45036/will-the-garbage-collector-call-idisposable-dispose-for-me)। –