Прочитать на английском

Поделиться через


Stream.Close Метод

Определение

Закрывает текущий поток и отключает все ресурсы (например, сокеты и файловые дескрипторы), связанные с текущим потоком. Вместо вызова данного метода, убедитесь в том, что поток надлежащим образом ликвидирован.

C#
public virtual void Close ();

Комментарии

Этот метод вызывает Dispose, указывая true для освобождения всех ресурсов. Не нужно специально вызывать Close метод . Вместо этого убедитесь, что каждый Stream объект удален должным образом. Можно объявить Stream объекты в блоке using (или Using блоке в Visual Basic), чтобы убедиться, что поток и все его ресурсы удалены, или можно явно вызвать Dispose метод .

Очистка потока не приведет к очистке его базового кодировщика, если вы явно не вызовете реализацию Flush или Close. Установка значения AutoFlushtrue означает, что данные будут сброшены из буфера в поток, но состояние кодировщика не будет сброшено. Это позволяет кодировщику сохранять свое состояние (частичные символы), чтобы он смог правильно кодировать следующий блок символов. Этот сценарий влияет на UTF8 и UTF7, где определенные символы можно закодировать только после того, как кодировщик получит смежные символы или символы.

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

Примечания для тех, кто наследует этот метод

В производных классах не переопределите Close() метод , а поместите всю логику Stream очистки Dispose(Boolean) в метод . Дополнительные сведения см. в разделе Реализация метода Dispose.

Применяется к

Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

См. также раздел