ibdac クエリ ( http://www.devart.com/ibdac/components.htmlexecuting ) には、次のような記述ができる関数があります。
while MyQuery.Executing do
begin
application.ProcessMessages;
Sleep(1);
end;
dbexpress クエリで同じコードを実装するにはどうすればよいですか (同様の関数はありません)。
ibdac クエリ ( http://www.devart.com/ibdac/components.htmlexecuting ) には、次のような記述ができる関数があります。
while MyQuery.Executing do
begin
application.ProcessMessages;
Sleep(1);
end;
dbexpress クエリで同じコードを実装するにはどうすればよいですか (同様の関数はありません)。
同様の機能はありません。ただし、バックグラウンド スレッドで MyQuery を実行すると、バックグラウンド スレッドが終了するとメイン スレッドが待機します。例えば:
type
TMyThread = class(TThread)
private
FQuery: TSQLQuery;
protected
procedure Execute; override;
public
constructor Create(AQuery: TSQLQuery);
end;
constructor TMyThread.Create(AQuery: TSQLQuery);
begin
inherited Create;
FreeOnTerminate := False;
FQuery := AQuery;
end;
procedure TMyThread.Execute;
begin
FQuery.ExecSQL;
end;
var
oThread: TMyThread;
....
oThread := TMyThread.Create(MyQuery);
try
while not oThread.Finished do begin
Application.ProcessMessages;
Sleep(1);
end;
finally
oThread.Free;
end;
PS: ところで、私はAnyDACを使用しています。バックグラウンド実行が組み込まれています。