问题情形:我在程序的主线程中定义一个过程AA(有要传入的参数的)--也就是说这个过程我要的是由主线程来执行的。然后我定义另一个线程BB。在线程BB的执行过程中,当某个条件满足时我要执行过程AA(注意:AA过程只能由主线程AA来执行),同时把相应的参数传给过程AA。怎么实现呢?谢谢!!

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm1 = class(TForm)
      private
        { Private declarations }
      public
        procedure AA(const Para: string);
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}{ TForm1 }procedure TForm1.AA(const Para: string);
    begin
      ShowMessage(Para);
    end;end.
    ----------------------------------------unit Unit2;interfaceuses
      Classes;type
      TBBThread = class(TThread)
      private
        { Private declarations }
        FPara: string;
        procedure BB;
      protected
        procedure Execute; override;
      end;implementationuses Unit1;procedure TBBThread.BB;
    begin
      Form1.AA(FPara);
    end;procedure TBBThread.Execute;
    begin
      Synchronize(BB);
    end;end.
      

  2.   

    欢迎广大Delphi程序员到《delphi专题研讨会》到QQ群7568683
    讨论
      

  3.   

    在上面的贴子中,执行Synchronize(BB)会不会阻塞,也就是要到BB执行完以后,Syschronize才返回??