Tag: flush

C#刷新StreamWriter和一个MemoryStream

我使用下面的代码片段,我不确定是否需要调用Flush方法(一次在StreamWriter ,一次在MemoryStream ): //converts an xsd object to the corresponding xml string, using the UTF8 encoding public string Serialize(T t) { using (var memoryStream = new MemoryStream()) { var encoding = new UTF8Encoding(false); using (var writer = new StreamWriter(memoryStream, encoding)) { var serializer = new XmlSerializer(typeof (T)); serializer.Serialize(writer, t); writer.Flush(); } memoryStream.Flush(); return encoding.GetString(memoryStream.ToArray()); } […]

如何“刷新”TCP客户端缓冲区?

我从几个示例中提取了一个连接到服务器的全双工C#TCP客户端。 基本概念是客户端和服务器都发送/接收消息(命令和事件)。 因此,我开发了一个FullDuplexSocket类,它公开了一个Send方法来向服务器发送消息,以及一个事件处理程序来接收来自服务器的消息。 一切正常,除了我似乎无法刷新从服务器收到的消息的缓冲区。 每次服务器发送新消息时,套接字中的缓冲区都包含所有旧消息(已读取) 和新消息。 我可以通过已知的分隔符(/ r / n)拆分消息并跟踪它们,但这可能是长时间运行通信时内存问题的根源。 [编辑:将代码更新为不再存在缓冲区问题并且工作正常的解决方案]。 有没有人有什么建议。 总重写??? 代码如下,希望它能帮助他人。 这是FullDuplexSocket类: using System; using System.Text; using System.Net.Sockets; namespace Utilities { public class StateObject{ public Socket workSocket = null; public const int BUFFER_SIZE = 1024; public byte[] buffer = new byte[BUFFER_SIZE]; } public class FullDuplexSocket : IDisposable { public event NewMessageHandler OnMessageReceived; […]

关闭没有Flush()的文件流

我可以在不调用Flush情况下关闭文件流(在C#中)吗? 我知道Close和Dispose调用Flush方法。

我需要做StreamWriter.flush()吗?

假设这个C#代码: using (MemoryStream stream = new MemoryStream()) { StreamWriter normalWriter = new StreamWriter(stream); BinaryWriter binaryWriter = new BinaryWriter(stream); foreach(…) { binaryWriter.Write(number); normalWriter.WriteLine(name); //<~~ easier to reader afterward. } return MemoryStream.ToArray(); } 我的问题是: 我是否需要在循环内使用flush以保持顺序? 返回MemoryStream.ToArray()合法吗? 我使用using -block作为约定,我担心它会搞砸。

如何删除类的实例?

所以,我有这个项目创建一个类的多个实例,并列出它们。 在某些时候,不再需要实例化的类。 我怎么冲洗它? 到目前为止,它不会发生,即使该类不再需要做任何事情(如果它是一个静态类,程序将关闭),它仍然在我的列表中,它的公共变量仍然可用。 ..

了解Streams及其生命周期(Flush,Dispose,Close)

注意:我已经阅读了以下两个问题: 你能解释一下溪流的概念吗? C#使用流 我在C#中编码 在几乎所有使用流的代码示例中,几乎总是调用.Dispose(),.Flush(),.Close()。 在流的概念中,完成了什么? 如果我不处理存储在变量中的流,我的应用程序是否泄漏到某处? 为什么我需要调用这些函数中的任何一个? 我见过没有这样做的代码示例仍然可以完成工作(没有明显的破损) 我正在我的应用程序中构建一个类,它包含一个主方法(让我们称之为GetStream() ),它通过myWebRequest.GetResponse().GetResponseStream()返回一个流myWebRequest.GetResponse().GetResponseStream() 主要方法GetStream()返回一个Stream对象,该对象可用于需要流的任何操作(StreamReader,Bitmap()等)。 有没有办法让流在最后一次使用后自动处理(垃圾收集?),而不强迫任何人调用.GetStream()来手动处理它? 你可能会说,我的问题很模糊和笼统。 我对流的理解并不牢固,所以任何链接到有用的文章,提供更深入的视图流,而不是SO问题可以提供。

RavenDB如何刷新?

我正在使用RavenDb嵌入式。 作为我整合测试的一部分,我想检查对象是否持久化。 当我在一个对象上SaveChanges然后检索它时,除非我处理我的连接,否则找不到它。 这对我不起作用,因为没有返回任何文件 using (var session = _dataDocumentStore.Instance.OpenSession()) { session.Store(file); session.SaveChanges(); } …. using (var session = _dataDocumentStore.Instance.OpenSession() ) { return session.Query().ToList(); } 我创建了一个Flush方法来处理和重新创建一个可以工作的EmbeddableDocumentStore,但是因为这是感觉基本的东西我可能会以错误的方式处理事情: public static IDocumentStore Initialize() { instance = new EmbeddableDocumentStore { DataDirectory = “App_Data/Database”, UseEmbeddedHttpServer = true, }; instance.Initialize(); return instance; } public void Flush() { instance.Dispose(); Initialize(); } 你如何坚持RavenDB,然后检查它一直存在? 对此的任何建议都会很棒

如何刷新HttpListener响应流?

HttpListener为您提供响应流,但调用flush意味着什么(来自消息来源很清楚,因为它实际上什么都不做)。 挖掘HTTP API内部显示这是HttpListener本身的限制。 任何人都知道如何刷新HttpListener的响应流(可能是reflection或额外的P / Invokes)? 更新:如果您没有刷新选项或定义缓冲区大小的能力,则无法对任何内容进行http流。

有没有办法从C#WPF应用程序刷新DNS缓存? (在XP,Vista,Win7上)

有没有办法从C#WPF应用程序刷新DNS缓存? 该应用程序将在XP,Vista或Windows 7上运行。

如何确保所有数据都已物理写入磁盘?

据我所知,.NET FileStream的Flush方法只将当前缓冲区写入磁盘,但依赖于Windows的磁盘驱动程序和硬盘固件,这并不能保证数据实际上是物理写入磁盘。 是否有.NET或Win32方法可以给我这个保证? 因此,如果在调用此方法后一个纳秒时出现断电,我仍然可以确定一切正常吗?