これは、すべての開発者が時々直面する非常に一般的な問題であり、視覚的な更新が非常に高速で、フォームの内容がちらつくことがあります。現在、スレッドを使用してファイルを検索し、その呼び出し元 (メイン VCL) スレッドにイベントをトリガーして、すべての検索結果を報告しています。FindFirst
/を使用したことがある場合FindNext
、または非常に高速で高速な反復を実行する大規模なループを実行したことがある場合は、小さな反復ごとに GUI を更新することは非常に重く、スレッドの目的をほとんど無効にすることを知っているでしょう。スレッドは、GUI がどれだけ速く更新できるかに依存するようになるためです (スレッド内のすべての反復で)。
スレッドからのすべてのイベント (1 ミリ秒で 100 個のイベントが発生する可能性があります) に対して私が行っていることは、単純にグローバル整数をインクリメントして反復回数をカウントすることです。次に、その番号をメイン フォームのラベルに表示しています。ご想像のとおり、スレッドからの急速な更新により、これは制御できないほどちらつきます。
だから私が知りたいのは、スレッドが更新できるよりも速くイベントをフィードしているときに、GUI でこの急速なちらつきを回避する方法です。
注: VCL スタイルを使用しているため、ちらつきがさらに悪化します。