C# 使用memorystream清除二进制编写器
我有一个带有memorystream的binarywriter,如果出现以下情况,我需要清除它:C# 使用memorystream清除二进制编写器,c#,c#-4.0,memorystream,binarywriter,C#,C# 4.0,Memorystream,Binarywriter,我有一个带有memorystream的binarywriter,如果出现以下情况,我需要清除它: public void Execute() { MemoryStream memoryStream = new MemoryStream(); BinaryWriter writer = new BinaryWriter(memoryStream); Log log = new Log(writer); log.Write("OK1"); ... /
public void Execute() {
MemoryStream memoryStream = new MemoryStream();
BinaryWriter writer = new BinaryWriter(memoryStream);
Log log = new Log(writer);
log.Write("OK1");
...
// If condition
memoryStream = new MemoryStream();
...
log.Write("OK2");
...
}
public class Log {
private BinaryWriter log;
public Log(BinaryWriter bw)
{
log = bw;
}
public void write(string msg)
{
log.Write(msg);
}
}
但问题是memorystream是空的。我再次尝试创建一个新的BinaryWriter:
public void Execute() {
MemoryStream memoryStream = new MemoryStream();
BinaryWriter writer = new BinaryWriter(memoryStream);
Log log = new Log(writer);
log.Write("OK1");
...
// If condition
memoryStream = new MemoryStream();
writer = new BinaryWriter(memoryStream);
...
log.Write("OK2");
...
}
public class Log {
private BinaryWriter log;
public Log(BinaryWriter bw)
{
log = bw;
}
public void write(string msg)
{
log.Write(msg);
}
}
但是BinaryWriter和MemoryStream都是临时的
如何使用memorystream清除binarywriter?我需要将memorystream的最终内容写入一个文件
谢谢 此代码通过内存流初始化
log
对象,然后创建另一个内存流,其引用存储在memoryStream
中,但log
object binarywriter有其原始内存流,而不是新的内存流。
您可以通过检查它们的HashCode来检查这一点。此代码通过内存流初始化
log
对象,然后创建另一个内存流,其引用存储在memoryStream
中,但log
对象binarywriter有其原始内存流,而不是新内存流。
您可以通过检查它们的HashCode来检查这一点。此代码通过内存流初始化
log
对象,然后创建另一个内存流,其引用存储在memoryStream
中,但log
对象binarywriter有其原始内存流,而不是新内存流。
您可以通过检查它们的HashCode来检查这一点。此代码通过内存流初始化
log
对象,然后创建另一个内存流,其引用存储在memoryStream
中,但log
对象binarywriter有其原始内存流,而不是新内存流。
您可以通过检查它们的HashCode来检查这一点。您的意思是要写入不同的
内存流吗?您已将旧的编写器的引用传递给日志
,因此日志
实例保存该引用。在此之后更改writer
变量将不会生效。你要么
创建一个新日志,并将新的编写器传递给它
公开Log
方法,以允许从外部操纵对象保留的BinaryWriter
您的意思是要写入不同的内存流
?您已将旧的编写器的引用传递给日志
,因此日志
实例保存该引用。在此之后更改writer
变量将不会生效。你要么
创建一个新日志,并将新的编写器传递给它
公开Log
方法,以允许从外部操纵对象保留的BinaryWriter
您的意思是要写入不同的内存流
?您已将旧的编写器的引用传递给日志
,因此日志
实例保存该引用。在此之后更改writer
变量将不会生效。你要么
创建一个新日志,并将新的编写器传递给它
公开Log
方法,以允许从外部操纵对象保留的BinaryWriter
您的意思是要写入不同的内存流
?您已将旧的编写器的引用传递给日志
,因此日志
实例保存该引用。在此之后更改writer
变量将不会生效。你要么
创建一个新日志,并将新的编写器传递给它
公开Log
方法,以允许从外部操纵对象保留的BinaryWriter
第一个代码段不起作用,因为BinaryWriter仍在使用旧的MemoryStream引用。你无法说服它使用新的
第二个代码段不起作用,因为日志类仍在使用旧的BinaryWriter引用。您可以通过添加一个更新“log”的方法来说服它使用新的方法
或者你可以作弊并调用memoryStream.SetLength(0)强制它从头开始
一定要回顾一下使用MemoryStream进行日志记录的智慧。它的大小没有上限。大概是您寻找此解决方案的原因。当你需要倒流时,完全扔掉所有东西是不好的。Murphy将确保在您需要日志中的信息来解决问题的确切时刻发生这种情况。A没有此问题。第一个代码段不起作用,因为BinaryWriter仍在使用旧的MemoryStream引用。你无法说服它使用新的
第二个代码段不起作用,因为日志类仍在使用旧的BinaryWriter引用。您可以通过添加一个更新“log”的方法来说服它使用新的方法
或者你可以作弊并调用memoryStream.SetLength(0)强制它从头开始
一定要回顾一下使用MemoryStream进行日志记录的智慧。它的大小没有上限。大概是您寻找此解决方案的原因。当你需要倒流时,完全扔掉所有东西是不好的。Murphy将确保在您需要日志中的信息来解决问题的确切时刻发生这种情况。A没有此问题。第一个代码段不起作用,因为BinaryWriter仍在使用旧的MemoryStream引用。你无法说服它使用新的
第二个代码段不起作用,因为日志类仍在使用旧的BinaryWriter引用。您可以通过添加一个更新“log”的方法来说服它使用新的方法
或者你可以作弊并调用memoryStream.SetLength(0)强制它从头开始
一定要回顾一下使用MemoryStream进行日志记录的智慧。没有上流社会