使用框架4.6.1和沉重的压力下,它仍然有这个问题。我不确定它为什么会这样做,尽管我找到了一种解决方法非常不同的方法(这增强了我的感觉,它确实是一个.net错误)。
在我的情况下,我试图写入巨大的锯齿阵列磁盘(视频缓存)。 由于参差不齐的数组非常大,因此必须进行大量的重复写入才能存储大量的视频帧,并且尽管未压缩且每个缓存文件都有精确的1000帧,但记录的现金文件的大小各不相同。
我有问题,当我用这个
//note, generateLogfileName is just a function to create a filename()
using (FileStream fs = new FileStream(generateLogfileName(), FileMode.OpenOrCreate))
{
using (StreamWriter sw = new StreamWriter(fs)
{
// do your stuff, but it will be unreliable
}
}
然而,当我提供它的编码类型,所有记录的文件有一个大小相等,问题就消失了。
using (FileStream fs = new FileStream(generateLogfileName(), FileMode.OpenOrCreate))
{
using (StreamWriter sw = new StreamWriter(fs,Encoding.Unicode))
{
// all data written correctly, no data lost.
}
}
注意还要读取文件宽度相同的编码类型!
与你的问题没有关系,但是对Close的调用是多余的...... StreamWriter将被放置在使用块的末尾 – 2010-10-07 18:45:30
是的,更新了帖子并删除了该行。谢谢! – 2010-10-07 18:46:44
没有人会写这样的日志记录方法。它会覆盖以前记录的行。代码*真的*看起来像什么? – 2010-10-07 18:56:10