StreamWriter의 독립적 관리: 기본 스트림을 닫지 않고 릴리스
StreamWriter 개체가 해제되면 연결된 기본 스트림도 해제됩니다. 이 동작은 기본 스트림을 열어 두어야 할 때 문제를 일으킬 수 있습니다. 다행히도 이 문제를 해결하는 방법에는 여러 가지가 있습니다.
대안:
코드 예:
다음 코드는 .NET Framework 4.5 이상에서 StreamWriter 오버로드를 사용하는 방법을 보여줍니다.
<code class="language-csharp">using (var writer = new StreamWriter(baseStream, Encoding.UTF8, leaveOpen: true)) { // 对StreamWriter进行写入操作 } // 基础流保持打开状态</code>
이전 버전의 .NET Framework:
이전 버전의 .NET Framework에서는 다음을 사용하여 스트림 래퍼를 결합할 수 있습니다.
<code class="language-csharp">public class StreamWrapper : Stream { private Stream baseStream; public StreamWrapper(Stream baseStream) { this.baseStream = baseStream; } // 重写Close和Dispose方法以忽略基础流调用 // ... (此处需要补充Close和Dispose方法的具体实现,使其不关闭baseStream) } // 使用方法 using (var writer = new StreamWriter(new StreamWrapper(baseStream))) { // 对StreamWriter进行写入操作 } // 基础流保持打开状态</code>
이러한 기술을 사용하면 기본 스트림의 상태에 영향을 주지 않고 StreamWriter 개체를 관리할 수 있습니다. 이전 버전의 .NET Framework 스트림 래퍼 예제의 경우 Close
및 Dispose
메서드를 직접 구현하여 baseStream
이 닫히지 않도록 해야 합니다.
위 내용은 BaseStream을 닫지 않고 StreamWriter를 어떻게 처리할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!