0

aviCopyFilesを使用するように設定されたTAnimateコンポーネントを含む単純なVCLフォームがあります。フォームにはShellAnimationsユニットが含まれているため、Windows7で動作します。

フォームをアクティブ化すると、TAnimateがアクティブになり、更新プロセスの一部としてLZCopyを使用してファイルのコピーが開始されます。

私が見つけたのは、TAnimateイメージは、それ自体のスレッドにあるはずなのに(Timersプロパティはfalse)、Application.ProcessMessagesを呼び出した場合にのみ変更されるということです。

更新されたファイルをコピーするためにループ中にスムーズにアニメーション化するにはどうすればよいですか?

4

1 に答える 1

4

気が変わって!

アプリケーションのメインスレッドは、UIを維持し、オペレーティングシステムに応答することを目的としています。たとえば、メッセージキューにサービスを提供し、受信したメッセージに適切に応答します。

TAnimateそのように考えると、メインスレッドがビジー状態のときに機能するが必要ないことがわかります。必要なのは、重い作業を別のスレッドに移動して、応答性の高いメインスレッドを作成することです。

あなたの場合、ループを移動して更新されたファイルを別のスレッドにコピーすると、TAnimateがメインスレッドによって常にスムーズにアニメーション化されます。

于 2013-03-15T01:25:54.590 に答える