0

アプリケーションに 2 つのタブがあります。どちらにもテーブルがあります - 1 つは入力用、もう 1 つは出力用です。出力テーブルのタブがアクティブになると、データを分析して出力グリッドに入力するプロセスがトリガーされます。

出力グリッドのレンダリングに数秒かかるため、アニメーション化されたアイコンを表示したいと考えています。TFloat アニメーションと TAniIndicator を使用して TImage を試しました。分析プロセスの実行中に両方ともフリーズしているようです。

4

1 に答える 1

1

シングルスレッドアプリケーションのようです。問題は、1 つのスレッドが一度に 1 つの「タスク」を実行できることです。

シングルスレッド アプリケーションの場合、メイン スレッドはいくつかのことを担当します。

  • UI の処理 (更新、描画など)
  • コードを実行します。つまり、TabXActivate() などのコントロールのイベントに反応します。

Analyze() 関数を実行すると、メイン スレッドがブロックされ、UI を更新できなくなります。副作用として、アニメーションがフリーズするようです。

長時間実行されるタスクを別のスレッドに移動することをお勧めします。タスクが終了した後、メイン スレッドにシグナルを送信して、インジケーターを停止し、ユーザー入力の受信を続行します。これにより、メイン IU スレッドがブロックされず、TAniIndicator が正しく機能します。

注意: スレッドの同期とスレッドの安全性に注意してください! VCL/FMX コンポーネントはスレッドセーフではありません。ここで役立つ情報を見つけることができます:

于 2013-09-22T18:09:14.597 に答える