C#读写文件异常,出现文件写不进去,或软件自动关闭,出现"变量未定义"等不同现象.
用c#读取TCP/IP传过来的数据包,数据量较大,对多个文件进行多写操作.运行一段时间后,出现软件自动关闭,或打开文件时数据丢失,软件报错等现象.
请看看有什么好的建议.
private void writeFile()
{
//Monitor.Enter(this);//锁定,保持同步
int i = 0;
int j = 0;
int k = 0;//长度
// try
// {
while (i < chnnm.Count)
{
path1 = Application.StartupPath + "\\dats\\" + chnnm[i].devs.ToString() + "-" + chnnm[i].numb.ToString() + " " + chnnm[i].fime;
if (File.Exists(path1))//工作状态并且文件存在
{
byte[] bf = new byte[910];
j = 0;
k = 0;//长度
while (j < datrm.Count)
{
if (k >= 900)
{
MessageBox.Show("k>=900");
break;
}
if ((datrm[j][0] == (byte)chnnm[i].devs) && (datrm[j][1] == (byte)chnnm[i].numb))
{
bf[k++] = datrm[j][2];
bf[k++] = datrm[j][3];
bf[k++] = datrm[j][4];
datrm.Remove(datrm[j]);
continue; //删除当前记录后,不要执行j++;
}
j++;
}
if (k != 0)
{
FileStream fs = new FileStream(path1, FileMode.Append, FileAccess.Write, FileShare.ReadWrite);
fs.BeginWrite(bf, 0, k, new AsyncCallback(WriteDone), fs);
// fs.Write(bf, 0, k);
// Thread.Sleep(200);
}
}
i++;
}
// }
// catch { MessageBox.Show("错误"); }
//Monitor.Exit(this);//取消锁定
}