Delphi 10.1 Berlin で FireDac を使用しています。
ユーザーにデータを表示するには、TDBEdit などのデータ認識コントロールを使用します。
TFDQuery と TDataSource を使用して、それらをコントロールにリンクします。
これは機能しますが、実行に時間がかかる長い SQL クエリは GUI をフリーズさせます。
これらの長時間実行されるクエリの実行中に GUI がフリーズするのを防ぐ方法を考えています。
バックグラウンドスレッドについて考えていました。
ウィキで、FireDac がマルチスレッドで動作できることを読みました: http://docwiki.embarcadero.com/RADStudio/XE6/en/Multithreading_(FireDAC)
ただし、embarcadero コミュニティ フォーラムのスレッドで、 Jeff Overcash は次のように書いています。
私が尋ねたり、Dmitry が言及したりしなかったことの 1 つは、バックグラウンド スレッド クエリに対して TDataSource または LiveBindings を使用できないことです。結果を表示するクエリをバックグラウンドでスレッド化している場合は、LB または DataSource を切断し、すべてのデータを開いてフェッチしてから、接続を再確立する必要があります。
これらの 2 つは、カーソルを移動しようとするか、表示のためにバッファをクエリしようとしますが、バッファは非常に揮発性が高く、別のスレッドで移動されます。
FireDac も使用してフォームに値を表示する人がここで私を助けてくれるかどうか疑問に思っています。