程序运行中碰到一个错误,提示a sharing violation occurred while accessing ...(文件名)。
这个错误是如何产生的?

解决方案 »

  1.   

    sharing violation
    共享冲突
      

  2.   

    错误场景如下:
    1、只有1个应用程序运行,不存在进程间的访问
    2、有2个类会操作到文件,1个类负责只写,一个类负责只读
    3、负责写的类只会在1个线程 中运行,有个全局锁防止读写同时进行
    4、写线程开始运行时,进入临界区,线程退出时离开临界区。同样读操作也是
    5、写文件时使用CFile::modeReadWrite|CFile::typeBinary|CFile::shareDenyWrite标记打开,
    读文件时使用CFile::modeRead|CFile::typeBinary打开。大家帮忙分析下情况。。谢谢。
      

  3.   

    写文件使用这个方式打开试试:
    CFile::modeCreate|CFile::modeWrite|CFile::modeNoTruncate
      

  4.   

    你第一次操作完,记得CFile::Close...
      

  5.   

    CFile::shareDenyWrite
    改成
    CFile::shareDenyNone
    再试试
      

  6.   

    已经查到,居然是一个数组越界问题~!郁闷,被这个ErrorReport给误导了