Я хочу реализовать пользовательское время ожидания для своего класса-оболочки.
Этот код работает, но без таймаута: /
Давайте посмотрим, что я реализовал:
Определение:
TComplusWrapper = class(TObject)
private
fComplus: OleVariant;
public
constructor Create;
destructor Destroy; override;
function Execute(paramOne: String; paramTwo: string): String;
end;
Реализация:
constructor TComplusWrapper.Create;
var
fMAchineName,
fApplication: string;
begin
fMAchineName := 'mydomain.com';
fApplication := '{83EAA392-6154-419B-9177-E0BB4C3F8785}';
fComplus := CreateRemoteComObject(FMachineName, StringToGUID(FApplication)) as IDispatch;
end;
destructor TComplusWrapper.Destroy;
begin
fComplus := VarNull;
end;
function TComplusWrapper.Execute(paramOne: string; paramTwo: string): string;
begin
//here I want to implement the timeout
Result := fComplus.fxExecute(paramOne, paramTwo);
end;
Используется:
procedure TMain.btnFakeClick(Sender: TObject);
var
complus: TComplusWrapper;
cXML,
fComputerName: string;
begin
cXML := '<exp>myXml</exp>';
fComputerName := 'LT-134242';
complus := TComplusWrapper.Create;
try
showMessage(complus.Execute( cXML, FComputerName))
finally
complus.Destroy;
end;
end;
Я использую Токио 10.2 и хочу написать собственный тайм-аут в функции TComplusWrapper.Execute для мониторинга и, например, принудительно завершите функцию 'fComplus.fxExecute ()', если это займет слишком много времени.
Любая возможная идея?
Заранее спасибо