多个线程同时操作一个文本文件会出错这个要怎么处理啊,在线等 

解决方案 »

  1.   

    我的功能大概说一下!一个服务器有多个客户端连接进来,然后每个客户端都有数据发送回来,然后我想把客户端何时上线,何时发数据等信息写入到一个log.txt里大概就是这样子。
      

  2.   

    把写入到LOG.TXT的代码放到临界区里
      

  3.   

    不会串就是多个线程同时把数据写入到 log.txt里就出错了。
      

  4.   

    都调用同一个写日志接口,可以加个TCriticalSection试试?
    也可以先将日志放到内存中,等到一定数量时再写一次
      

  5.   

    Synchronize(fun);把操作文件的代码放在fun过程里
      

  6.   


    var 
      CriticalSection: TRTLCriticalSection;  InitializeCriticalSection(CriticalSection);
      //....
      EnterCriticalSection(CriticalSection);
      //写文件
      LeaveCriticalSection(CriticalSection);
      

  7.   

    将log载入memo中 用多线程操作memo就能很明显的看出来 串了
      

  8.   

    用临界区
    var 
      CriticalSection: TRTLCriticalSection;  InitializeCriticalSection(CriticalSection);//初始化
      //....
      EnterCriticalSection(CriticalSection);//进入
      //写文件过程
      LeaveCriticalSection(CriticalSection);//离开
    确保同一时间,只能有一个操作文件
      

  9.   

    在一个程序内可以使用临界区,把操作LOG的代码写在临界区内,
    类似于只有一个蹲位的公共厕所, 只能一个个地进
    这样就不会出错了...不会让你俩人一个便池.嘿!
      

  10.   

    所有的日志都先保存到一个TStringList 中,然后在定时或达到某个量的时候就保存。多个线程要操作一个资源,有的写入,有的删除的话要用临界区操作。《WINDOWS核心编程》一书中有详细的说明。