CFile fWrite;
BOOL bOpenFlag = fWrite.Open(m_strSaveFilePath,
CFile::modeNoTruncate | CFile::modeCreate | CFile::modeWrite,NULL);//存在则打开,不存在则创建
if (bOpenFlag)//成功,写
{
int nLenth = 8;
//整理数据                //整理数据的时间不会很长,不会超过1ms的时间 nLenth = fWrite.GetLength();
m_nNumsOfRecord = nLenth / 52;

fWrite.SeekToEnd();
fWrite.Write(m_byDataBuf,52);
fWrite.Abort();//一开始是Close()的,但是效果是一样的
}
else
{
static iNums = 0;//记录次数
DWORD dwError = GetLastError();
m_strListOut.Format("打开记录文件失败!LastError:%d-%d",dwError,iNums);//通过Report提示出来。
SendMessage(WM_DISPLAYINFO,0,0);
iNums++;
fWrite.Abort();
}//发现一个奇怪的现象,每隔1秒调用此代码一次,文件目前是十多M吧
//为什么长时间执行下来,会有几条数据的丢失,丢失的结果都是此文件被其他进程打开!首先声明这个程序只做这么一件事,还有其他程序没有访问此文件。
//运行的平台是笔记本。PM1.7G,应该不慢啊!
//高手帮忙分析原因!!!!!!!

解决方案 »

  1.   

    //发现一个奇怪的现象,每隔1秒调用此代码一次,文件目前是十多M吧
    是不是有一个Timer?//为什么长时间执行下来,会有几条数据的丢失,丢失的结果都是此文件被其他进程打开!首先声明这个程序只做这么一件事,还有其他程序没有访问此文件。
    可能是多线程的。
      

  2.   

    是的,是OnTimer里面处理的。
    不是多线程的程序
      

  3.   

    如果你在OnTimer中只是读没有写,那么你就在两个打开文件的地方都加上CFile::shareDenyNone试下。