メモリにロードする必要のある大きなクエリがあります。このクエリを開くには約30秒かかります。アプリケーションの起動直後に1回だけロードされます。この間、アプリケーションはハングします。私がする必要があるのは、30秒間にプログレスバーを更新することです。プログレスバーを更新するために新しいスレッドを作成しようとしましたが、クエリが開かれた後にのみ更新されます。誰かがこれを行う簡単な方法を指摘できますか?
スレッドクラスを作成しました:
type
TMyThread = class(TThread)
private
fLowerLimit: Integer;
fUpperLimit: Integer;
スレッドクラスのインスタンスを作成しています:
CountingThread := TMyThread.Create(0, 300, True);
CountingThread.Resume;
//
SplashDlg.Show;
スレッド内では、プログレスバーを更新しています。
procedure TMyThread.UpdateMainThread;
begin
SplashDlg.ProgressBar1.Position:= SplashDlg.ProgressBar1.Position+1;
MyDebug('UpdateMainThread:'+ IntToStr(SplashDlg.ProgressBar1.Position));
end;
クエリを開いている間、スレッドがハングします。