Ответы пользователя по тегу C#
  • System.ObjectDisposedException: "Доступ к закрытому файлу невозможен." не понятно, что не так?

    @Asapin
    В свободное время ковыряюсь с Rust и Wasm
    Согласно документации, метод Close у StreamWriter самостоятельно закрывает нижележащий поток (в вашем случае это FileStream). И при закрытии нижележащего потока StreamWriter пытается записать в него всё, что, возможно, успело накопиться в буфере,но еще не было записано (строка
    System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder)
    в вашем стектрейсе).
    Но так как файловый поток уже закрыт, вызов метода Flush приводит к ошибке.

    Совет на будущее - закрывайте потоки в порядке обратном тому, в котором вы их открывали. Т.е. если вы их открывали в порядке A -> B(A) -> C(B), то закрывать их надо в порядке C, B, A.
    По крайней мере в Java, закрытие уже закрытого потока является по сути no-op (если поток уже закрыт, то делается return из метода Close). И подозреваю, что в C# сделано так же. А значит и ошибок таких не будет.
    Ответ написан
    1 комментарий