我自己写了一个过程 myProc(str : string);
想在线程中使用同步myThread.Synchronize (myProc);
但是,DELPHI的Synchronize中用的方法必须是无参数的,那该怎么办呢?有什么好的解决方法吗?

解决方案 »

  1.   

    no,差太远了,你的myProc是不是写在线程的execute下了。
    Synchronize(这里是线程参数);Synchronize是叫VCL的主线程安全执行VCL方法,U know?
      

  2.   

    哦,对,看看,borland的demo中的那个先程排序,肯定能得到答案
      

  3.   

    type TThreadMethod = procedure of object;可以啊
    怎么不可以?
      

  4.   

    不好意思,手头没D的环境,就是borland的目录 啊
      

  5.   

    自己建立临界区

    TRTLCriticalSection比用Synchronize好多了
      

  6.   

    TSynchroObject = class(TObject)
      public
        procedure Acquire; virtual;
        procedure Release; virtual;
      end;TCriticalSection = class(TSynchroObject)
      protected
        FSection: TRTLCriticalSection;
      public
        constructor Create;
        destructor Destroy; override;
        procedure Acquire; override;
        procedure Release; override;
        procedure Enter;
        procedure Leave;
      end;{ TSynchroObject }procedure TSynchroObject.Acquire;
    begin
    end;procedure TSynchroObject.Release;
    begin
    end;{ TCriticalSection }constructor TCriticalSection.Create;
    begin
      inherited Create;
      InitializeCriticalSection(FSection);
    end;destructor TCriticalSection.Destroy;
    begin
      DeleteCriticalSection(FSection);
      inherited Destroy;
    end;procedure TCriticalSection.Acquire;
    begin
      EnterCriticalSection(FSection);
    end;procedure TCriticalSection.Release;
    begin
      LeaveCriticalSection(FSection);
    end;procedure TCriticalSection.Enter;
    begin
      Acquire;
    end;procedure TCriticalSection.Leave;
    begin
      Release;
    end;
      

  7.   

    0 建一个这样的类;1 系统中创建一个TCriticalSection对象
    2 线程执行操作前Enter
    3 线程执行操作后Leave4 退出系统前释放对象
      

  8.   

    你可以在线程中定义一个boolean型的变量,在线程的构造函数中给他赋true,结束的时候赋false。然后检测这个值就行,不过这个值得是全局变量才行
      

  9.   

    临界区的性能最好,如果使用SYSNCHRONIZE来同步,还不如不使用多线程.
      

  10.   

    本来也想用SYSNCHRONIZE,但是要使用的过程或方法不能带参数,就不用了!!