(TAzureBlobServiceまたはTAmazonStorageServiceを使用して)クラウドサービスにデータをアップロードまたはダウンロードする際に、アップロード/ダウンロードの進捗状況に関するフィードバックを得る方法がないようです。TAzureBlobServiceおよびTAmazonStorageServiceの進捗イベント
最終的にTIdTCPClientCustom.Connectが呼び出され、その関数では、接続用のデフォルトのIOHandlerが作成されます(存在しない場合はSSLを使用しない場合は作成されません)。そのIOHandlerのOnWorkBegin、OnWorkEnd、およびOnWorkイベントを設定することができれば、進捗状況を追跡できますが、それを行う方法はありません。
SSL接続が使用されている場合、IOHandlerが作成されます(たとえば、TAzureBlobService.PrepareRequest).IOHandlerはインターフェイスであり、OnWorkBeginなどのプロパティはありません。
解決策は、TAzureBlobServiceまたはTAmazonStorageServiceの子孫クラスを作成し、PrepareRequestメソッドをオーバーライドすることです。私はPrepareRequestで作成されたTCloudHTTPインスタンスにアクセスすることができ、そこからIOHandlerにアクセスできます。しかし、IOHandlerを(インターフェイスとして定義されているように)作成し、イベント(そのインターフェイスの一部ではない)を設定するにはどうすればよいですか?
おかげ
ポインタをありがとう、私は今それを考え出した。私の代わりのPrepareRequest関数では、単純に(Result.Peer.GetObjectをTIdTCPClientCustomとして).OnWorkBegin:= abcを使って作業イベントを設定します。 PrepareRequestの結果はTCloudHTTPです。 – Mick