1

長い闘争の末、lazarus をインストールしたコード タイフーンがあり、プロジェクトにユニット IdSync を含めることができました。

TIdNotify からメインスレッドで実行したい関数にパラメータを渡すにはどうすればよいですか?

4

1 に答える 1

1

TIdNotify.DoNotify() メソッドをオーバーライドする必要があります。次に、必要なパラメーターを渡すことができます。

type
  TMyNotify = class(TIdNotify)
  protected
    procedure DoNotify; override;
  end;

procedure TMyNotify.DoNotify;
begin
  SomeFunction(parameters);
end;

.

begin
  ...
  TMyNotify.Create.Notify;
  ...
end;

おそらく、呼び出し元のスレッドにパラメーター値を指定させたいので、それらをクラスのメンバーにするだけです。

type
  TMyNotify = class(TIdNotify)
  protected
    Param1: SomeType;
    Param2: SomeType;
    Param3: SomeType;
    procedure DoNotify; override;
  end;

procedure TMyNotify.DoNotify;
begin
  SomeFunction(Param1, Param2, Param2);
end;

.

begin
  ...
  with TMyNotify.Create do
  begin
    Param1 := ...;
    Param2 := ...;
    Param3 := ...
    Notify;
  end;
  ...
end;
于 2012-11-29T03:42:53.730 に答える