私はindy 10を使用していますが、私はどのようにファイルを転送するためのプログレスバーを実装できますかと思いました。私はonWorkイベントを試しましたが、トリガーされません。私が気に入っているもう一つのことは、ストリームがダウンロードされるまでアプリケーションがフリーズすることです。TIdTCPClientでプログレスバーを実装する方法は?
私は間違っていますか?
私はindy 10を使用していますが、私はどのようにファイルを転送するためのプログレスバーを実装できますかと思いました。私はonWorkイベントを試しましたが、トリガーされません。私が気に入っているもう一つのことは、ストリームがダウンロードされるまでアプリケーションがフリーズすることです。TIdTCPClientでプログレスバーを実装する方法は?
私は間違っていますか?
フォームにIdAntiFreezeコンポーネントを追加し、そのプロパティとイベントを使用してネットワーク操作の進行状況を通知します。
AntiFreezeは大変感謝しています。 – opc0de
いつもTIdAntiFreezeを使用する必要があります。通常は、まずは正しいデザインを使用していません。この場合、転送中にメインスレッドがブロックされないように、 'TIdTCPClient'を別のワーカースレッドに移動するほうが良いかもしれません。これがオプションでない場合は、 'OnWork ...'イベントの中の 'TForm'または' TProgressBar'の 'Update()'メソッドを少なくとも呼び出して、進行状況UIが視覚的に更新されるようにすることができます'TIdAntiFreeze'を全く使わずに。 –
TThread
を使用してダウンロードコードを別のスレッドに入れて、ダウンロード中にアプリがフリーズしないようにすることができます。TThread.Synchronize
に送信してプログレスバーを更新する手順があります。また、OnWork
を呼び出すには、OnWorkBegin
を最初に呼び出す必要があります。http://www.borlandtalk.com/image-vp569607.html
進捗状況のフィードバックを使用して子孫ストリームクラスをインスツルメント化できます。 – OnTheFly
[DelphiとIndyを使用してProgressイベントでプログラムからインターネットからファイルをダウンロードする]の可能な複製(http://stackoverflow.com/questions/2184473/download-a-file-from-internet-programatically-with-an-progress) -event-using-delph) –