1.

How Do I Get Deterministic Finalization In C#?

Answer»

In a garbage collected environment, it's impossible to GET true determinism. However, a design pattern that we recommend is implementing IDisposable on any CLASS that contains a critical resource. Whenever this class is consumed, it MAY be placed in a using STATEMENT, as shown in the following example:
using(FileStream myFile = File.Open(@"c:temptest.txt", FileMode.Open))
{
int fileOffset = 0;
while(fileOffset < myFile.Length)
{
Console.Write((char)myFile.ReadByte());
fileOffset++;
}
}
When myFile leaves the lexical scope of the using, its dispose method will be CALLED.

In a garbage collected environment, it's impossible to get true determinism. However, a design pattern that we recommend is implementing IDisposable on any class that contains a critical resource. Whenever this class is consumed, it may be placed in a using statement, as shown in the following example:
using(FileStream myFile = File.Open(@"c:temptest.txt", FileMode.Open))
{
int fileOffset = 0;
while(fileOffset < myFile.Length)
{
Console.Write((char)myFile.ReadByte());
fileOffset++;
}
}
When myFile leaves the lexical scope of the using, its dispose method will be called.



Discussion

No Comment Found