스트림이 이미 다른 BinaryWriter에 의해 사용되는 동안 새로운 BinaryWriter를 만들고 스트림에 쓸 수 있습니까?동일한 스트림에서 여러 BinaryWriter를 사용할 수 있습니까?
일부 데이터를 재귀 적으로 작성해야하지만 스트림을 전달해야하므로 BinaryWriter를 매개 변수로 전달하지 않도록합니다. 따라서 스트림에 데이터를 쓰는 각 메서드는 자체 BinaryWriter 인스턴스를 만들어야 할 수 있습니다. 그러나 이것이 옳은지 나는 모른다. 지금은 FileStream에서 잘 작동하지만 사용자 컴퓨터에서 예기치 않은 결과가 발생할 수 있는지 여부는 알 수 없습니다.
저는 제가 성취하고자하는 간단한 예를 썼습니다. 이 BinaryWriter의 사용이 잘못 되었습니까?
예 :
public Main()
{
using (var ms = new MemoryStream())
{
// Write data on the stream.
WriteData(ms);
}
}
private void WriteData(Stream output)
{
// Create and use a BinaryWriter to use only on this method.
using (var bWriter = new BinaryWriter(output, Encoding.UTF8, true))
{
// Write some data using this BinaryWriter.
bWriter.Write("example data string");
// Send the stream to other method and write some more data there.
WriteMoreData(output);
// Write some more data using this BinaryWriter.
bWriter.Write("another example data string");
}
}
private void WriteMoreData(Stream output)
{
// Create and use a BinaryWriter to use only on this method.
using (var bWriter = new BinaryWriter(output, Encoding.Unicode, true))
{
// Write some data on this BinaryWriter.
bWriter.Write("write even more example data here");
}
}
왜 재귀 적으로 만들지 않습니까? –
나에게 괜찮아 보인다. 물론 사용자에게 코드를 보내기 전에 가능한 많은 문제를 파악하기 위해 모든 일반적인 테스트를 거쳐야합니다. 그때까지는 코드가 의도 한대로 작동한다는 확신을 가져야합니다. –
그리고 BinaryWriter의 다른 인스턴스를 사용하여 스트림에 쓰기 전에 BinaryWriter에서 Flush()를 호출해야합니까? –