在多线程环境下经常用CFile操作文件失败的情况,但我感觉不是线程间的冲突,因为我的每个文件都是只写"属于"自己的文件.而这种情况又总是发生在我的程序在运行时,我干其他的事,如上网,看碟等(我写的程序要长时间运行,所以,很多时候要干点别的事),我怀疑可能是文件操作得不到足够的资源!有没有办法避免错误的发生呢?

解决方案 »

  1.   

    说不定和文件毫无关系,所以不进行简单的debug是不可能知道错误是啥的
      

  2.   

    每个线程写的文件是不同的!
    我看了下,一般的来说调用CFile::Open的时候就已经出错了,CFile的句柄为NULL,我只是没有做判断.即使做了判断,我也不知道做什么?跳过这个文件的操作是我不想看到的.
    刚才出去吃饭,关其他的程序,结果,这是我的程序正常运行的时间最长的一次,看来还是资源有关?
      

  3.   

    如果不是多线程共用一个对象就不是多线程的问题。
    open的时候判断返回值,如果失败了就把异常信息显示出来。
      

  4.   

    好像是有些问题,具体原因不清楚
    可以试试用fopen_s
      

  5.   

    估计和CFile没关系
    因为CFile操作是多线程安全的
    应该是你自己的代码存在问题
    检查写或者读缓冲指针是否有问题
      

  6.   

    "打开xxx时发生共享违例" 
    这就是系统繁忙时出的错误
      

  7.   

    CreateFile 的时候 sharemode 设定为 FILE_SHARE_WRITE