【发布时间】:2017-11-21 06:10:20
【问题描述】:
我有一个使用多线程(大量线程)的程序,需要记录每个线程的数据。它输出了很多非常小的数据样本,但速度非常快。我的数据兴趣是以连续方式记录所有样本。
所以我只需要记录几个高频更新的数字。 我想将数据附加到单个文件(多个线程到一个文件)。
如果我使用 streamwriter ea 有什么好奇怪的
const int BufferSize = 65536; // 64 Kilobytes
StreamWriter sw = new StreamWriter("filename", true, Encoding.UTF8, BufferSize);
Buffersize的作用是什么? 在缓冲区已满或流写入器刷新到磁盘之前不会写入数据吗? (或通过使用 using 构造进行刷新(也以 using 语句结束刷新)。至于程序设计,我可以将流编写器方法放在每个线程中,或者在程序启动时创建单个编写器(以便线程只执行附加写入)。
对我来说,快速记录很重要,并且所有内容都应该写入磁盘,因为我可能不会丢失样本。我必须确保它一直被写入并且没有排队,因为缓冲区还没有满。我还需要以连续的方式提供这些数据,直到按下某个按钮。 (无法存储在内存中)
【问题讨论】:
-
您的要求表明您不想想要缓冲。所以当然缓冲区大小根本不重要。设置 AutoFlush = true 就是这样。
标签: c# buffer streamwriter