2

次のような状況があります。

DelphiXEで開発しています。関数の大部分を DATAMODULE に入れています。

function1 (データベース、トランザクション、paramInteger) : float

たとえば、function1 はパラメーター データベース (TIBDATABASE)、トランザクション TIBTRANSACTION、および追加のパラメーター整数を受け取ります。float を返す

function  GetLastPretAch(DIBase : TIBDatabase; Tran : TIBTransaction; const aID : Integer) : Double;
var workQuery : TIBQuery;
begin
  try
    workQuery := TIBQuery.Create(Application);
    try
      workQuery.Close;
      workQuery.Database    := DIBase;
      workQuery.Transaction := Tran;
      workQuery.SQL.Clear;
      workQuery.SQL.Add('SELECT * FROM GETLASTPRETACH(-1, :AARTNR)');
      workQuery.ParamByName('AARTNR').AsInteger := aID;
      workQuery.Open;
      Result := workQuery.FieldByName('LASTPRET').AsFloat;
    except
      on e : Exception do begin
        raise EMagisterException.Create(TranslateIbError(e));
      end;
    end;
  finally
    FreeAndNil(workQuery);
  end;
end;

今、スレッドからこの関数を使用したいと思います。このスレッドは安全ですか?

inside execute procedure like
  ID := GetLastPretAch(database, transaction, 1);

スレッドセーフかどうか

4

2 に答える 2