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