class Program
{
static void Main(string[] args)
{
// The MyClass type has a Finalize method defined for it
// Creating a MyClass places a reference to obj on the finalization table.
var myClass = new MyClass();
// Append another 2 references for myClass onto the finalization table.
System.GC.ReRegisterForFinalize(myClass);
System.GC.ReRegisterForFinalize(myClass);
// There are now 3 references to myClass on the finalization table.
System.GC.SuppressFinalize(myClass);
System.GC.SuppressFinalize(myClass);
System.GC.SuppressFinalize(myClass);
// Remove the reference to the object.
myClass = null;
// Force the GC to collect the object.
System.GC.Collect(2, System.GCCollectionMode.Forced);
// The first call to obj's Finalize method will be discarded but
// two calls to Finalize are still performed.
}
}
class MyClass
{
~MyClass()
{
System.Console.WriteLine("Finalise() called");
}
}
Y2xhc3MgUHJvZ3JhbQp7CiAgICBzdGF0aWMgdm9pZCBNYWluKHN0cmluZ1tdIGFyZ3MpCiAgICB7CiAgICAgICAgLy8gVGhlIE15Q2xhc3MgdHlwZSBoYXMgYSBGaW5hbGl6ZSBtZXRob2QgZGVmaW5lZCBmb3IgaXQKICAgICAgICAvLyBDcmVhdGluZyBhIE15Q2xhc3MgcGxhY2VzIGEgcmVmZXJlbmNlIHRvIG9iaiBvbiB0aGUgZmluYWxpemF0aW9uIHRhYmxlLgogICAgICAgIHZhciBteUNsYXNzID0gbmV3IE15Q2xhc3MoKTsKCiAgICAgICAgLy8gQXBwZW5kIGFub3RoZXIgMiByZWZlcmVuY2VzIGZvciBteUNsYXNzIG9udG8gdGhlIGZpbmFsaXphdGlvbiB0YWJsZS4KICAgICAgICBTeXN0ZW0uR0MuUmVSZWdpc3RlckZvckZpbmFsaXplKG15Q2xhc3MpOwogICAgICAgIFN5c3RlbS5HQy5SZVJlZ2lzdGVyRm9yRmluYWxpemUobXlDbGFzcyk7CiAgICAgICAgLy8gVGhlcmUgYXJlIG5vdyAzIHJlZmVyZW5jZXMgdG8gbXlDbGFzcyBvbiB0aGUgZmluYWxpemF0aW9uIHRhYmxlLgoKICAgICAgICBTeXN0ZW0uR0MuU3VwcHJlc3NGaW5hbGl6ZShteUNsYXNzKTsKICAgICAgICBTeXN0ZW0uR0MuU3VwcHJlc3NGaW5hbGl6ZShteUNsYXNzKTsKICAgICAgICBTeXN0ZW0uR0MuU3VwcHJlc3NGaW5hbGl6ZShteUNsYXNzKTsKCiAgICAgICAgLy8gUmVtb3ZlIHRoZSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdC4KICAgICAgICBteUNsYXNzID0gbnVsbDsKCiAgICAgICAgLy8gRm9yY2UgdGhlIEdDIHRvIGNvbGxlY3QgdGhlIG9iamVjdC4KICAgICAgICBTeXN0ZW0uR0MuQ29sbGVjdCgyLCBTeXN0ZW0uR0NDb2xsZWN0aW9uTW9kZS5Gb3JjZWQpOwoKICAgICAgICAvLyBUaGUgZmlyc3QgY2FsbCB0byBvYmoncyBGaW5hbGl6ZSBtZXRob2Qgd2lsbCBiZSBkaXNjYXJkZWQgYnV0CiAgICAgICAgLy8gdHdvIGNhbGxzIHRvIEZpbmFsaXplIGFyZSBzdGlsbCBwZXJmb3JtZWQuCiAgICB9Cn0KCmNsYXNzIE15Q2xhc3MKewogICAgfk15Q2xhc3MoKQogICAgewogICAgICAgIFN5c3RlbS5Db25zb2xlLldyaXRlTGluZSgiRmluYWxpc2UoKSBjYWxsZWQiKTsKICAgIH0KfQ==