У меня есть класс, который должен удалить какой-то файл после его удаления или завершения. Внутри финализаторов я не могу использовать другие объекты, потому что они уже могли быть собраны в мусор.
Я упускаю какой-то момент относительно финализаторов и можно использовать строки?
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)
{
...
}
}
}