Порядок закрытия FileStream в Dispose
От: Fortnum  
Дата: 15.09.14 04:18
Оценка:
Предположим, есть некий класс A, у которого 2 поля типа FileStream, каким-то образом инициализируются. Если для внутреннего употребления надо сделать так, чтобы эти FileStream'ы в определенном порядке деинициализировались, я правильно понимаю, что шаблон Dispose будет ошибочным вариантом, т.к. в момент исполнения A.Dispose эти FileStream'ы уже могут быть закрыты GC?

Как лучше сделать для своего внутреннего употребления?

Если в момент инициализации эти FileStream'ы помещать в какой-то статический список-поле A.List<FileStream>, а в A.Dispose после деинициализации в нужном порядке, убирать их оттуда, это хорошее решение для внутреннего употребления?

public class A : IDisposable
{
    public A() { ... }

    public FileStream FileStream1;
    public FileStream FileStream2;

    ~A()
    {
        Dispose();
    }

    public void Dispose()
    {
        File.Delete(FileStream1);

        FileStream1.Dispose();

        FileStream2.Dispose();
    }
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.