我有一些写大二进制文件的程序。我遇到了一个问题:有时我的程序在写入文件时崩溃,而没有抛出任何错误(块catch不执行。我编写了一些测试控制台应用程序来查找和解决此问题。像这样的东西:
static void Main(string[] args)
{
for (int j = 0; j < 100; j++)
{
string fileName = @"D:\Users\nimci\Desktop\buf\"+j+".bin";
using (var output =
new BinaryWriter(File.Open(fileName, FileMode.Create, FileAccess.Write)))
{
for (int i = 0; i < 4000000; i++)
{
output.Write(i);
//if(i%1000==0) Thread.Sleep(1);
}
}
}
}我有这样的结果:一些文件的大小为0。例如,编号为8、10、15、17的文件...
在我的家用电脑(功率较小)上,所有文件都被正确写入,在我的工作电脑上,其中一些文件的大小为0。如果我取消注释Thread.Sleep(1);(或者以其他方式减慢我的程序),所有文件在我的工作计算机上也是正确的,但这样的“修复”在我的服务器计算机上不起作用。有人能解释一下发生了什么错误吗?我该如何修复它?我尝试使用try-cath-finally而不是using,但是catch块没有捕捉到这个错误。
发布于 2012-07-18 21:01:44
尝试添加同花顺:
for (int i = 0; i < 4000000; i++)
{
output.Write(i);
//if(i%1000==0) Thread.Sleep(1);
}
output.Flush(); https://stackoverflow.com/questions/11541978
复制相似问题