Какие объекты я могу использовать в методе финализатора?

У меня есть класс, который должен удалить какой-то файл после его удаления или завершения. Внутри финализаторов я не могу использовать другие объекты, потому что они уже могли быть собраны в мусор.

Я упускаю какой-то момент относительно финализаторов и можно использовать строки?

UPD: Что-то вроде этого:

public class TempFileStream : FileStream
{
    private string _filename;

    public TempFileStream(string filename)
        :base(filename, FileMode.Open, FileAccess.Read, FileShare.Read)
    {
        _filename = filename;
    }

    protected override void Dispose(bool disposing)
    {
        base.Dispose(disposing);
        if (_filename == null) return;

        try
        {
            File.Delete(_filename); // <-- oops! _filename could be gc-ed already
            _filename = null;
        }
        catch (Exception e)
        {
            ...
        }
    }
}
13
задан John Saunders 6 August 2011 в 21:50
поделиться