试参考createmutex\openMutex函数!

解决方案 »

  1.   

    可以用临界来实现你在这个函数中写到Procedure xxxxx.xxMethod;
    Begin
      FCriticalSection.Enter;
      Try
        //your codes.
      Finally
        FCriticalSection.Leave;
      End;
    End;实际上 Mutex 实现也一样, 可能临界会占少一点的资源
      

  2.   

    我不知道TCriticalSection的具体用法啊!
    它究竟锁住哪些变量啊?
      

  3.   

    comanche说的对,在程序员大本营2000 delphi版上有历程,大约在tipIII下,是属于undu的,找吧!!!
      

  4.   

    TCriticalSection:是一个内核对象,它允许每个时间段内,只能有一个线程控制这个对象,比如说当前线程a占有TCriticalSection,线程b申请占有TCriticalSection,则线程a正常运行,只有当a释放TCriticalSection,b才能运行!
    FCriticalSection.Enter;申请,当已被别对象占有,则线程等待
    FCriticalSection.Leave;释放
      
      
      

  5.   

    我看过UNDU了,里面有很多内容啊!
    而且都是E文的,好象找不到我需要的东西!
      

  6.   

    用线程的阻塞或互斥都可以使线程同步。
    互斥:
    建立一个互斥对象,要调用CreatMutex()函数 , 
    用完了过后,用CloseHandle()把它关闭。
    比如建立一个互斥对象:
    public hMutex : THandle = 0 ;
    begin
        hMuterx := CreateMutex(nil,False,nil);
        THashThread.Create(False);//THashThread为自己建立的Thread的继承类
        THashThread.Create(False);//两个线程,用hMuterx互斥同步。
    end;
      

  7.   

    我只是想锁住我的某个方法,让每个线程不能同时调用我的方法。
    -----你把你原来的代码填入下面:
    var CS:TCriticalSection;
    procedure TForm1.FormCreate;
    begin
         CS:=TCriticalSection.Create;
    end;
    procedure NewFunctin;
    begin
       try
         CS.Enter;
         ///你的代码!!
       finally
         CS。Leave;
    end;
    然后你各个线程调用这个newfunctin,每个时刻只允许一个线程调用newfunction
    这样一定可以!