C#. Как в if проверить StreamReader открыт он или нет?

Как в if проверить StreamReader открыт он или нет? Хотел чтобы он возвращал true если объект StreamReader открыт. К сожалению простое Convert.ToBoolean(sr_m) не работает. Помогите пожалуйста.


Ответы (1 шт):

Автор решения: Dev18

Даже если sr_m не равен null, поток, с которым он связан, мог быть закрыт. Например, если вы вызвали метод sr_m.Close() или sr_m.Dispose(), поток закроется, но сам объект StreamReader останется и не будет равен null.

мне кажется стоит добавить еще BaseStream проверку

bool isStreamReaderOpen = sr_m != null && sr_m.BaseStream != null;

if (sr_m != null && sr_m.BaseStream != null && sr_m.BaseStream.CanRead)
{
    // CanRead можете опустить, если вам просто надо проверить открытость
    // StreamReader открыт и поток доступен для чтения
}
else
{
    // StreamReader закрыт или недоступен
}

Попытка выполнить операции чтения с закрытым потоком приведет к исключению ObjectDisposedException

→ Ссылка