【发布时间】:2012-02-23 02:32:41
【问题描述】:
将数据上传或下载到云服务时(使用 TAzureBlobService 或 TAmazonStorageService),似乎没有任何方法可以获取有关上传/下载进度的反馈。
我可以看到最终调用了 TIdTCPClientCustom.Connect,并且在该函数中,如果不存在连接,它会为连接创建一个默认的 IOHandler(除非使用 SSL,否则它不会)。如果我可以为该 IOHandler 设置 OnWorkBegin、OnWorkEnd 和 OnWork 事件,那么我可以跟踪进度,但我看不到这样做。
如果使用 SSL 连接,则会创建一个 IOHandler(例如在 TAzureBlobService.PrepareRequest 中),但 IOHandler 是一个接口,没有 OnWorkBegin 等属性。
我认为解决方案是创建一个派生自 TAzureBlobService 或 TAmazonStorageService 的类,然后覆盖 PrepareRequest 方法。在那里我可以访问 TCloudHTTP 实例(因为它是在 PrepareRequest 中创建的),然后我可以访问 IOHandler。但是如何创建 IOHandler(因为它被定义为接口)并设置事件(不属于该接口)?
谢谢
【问题讨论】:
标签: delphi delphi-xe2 indy10