將數據上傳或下載到雲服務時(使用TAzureBlobService或TAmazonStorageService),似乎沒有任何方式獲得有關上載/下載進度的反饋。TAzureBlobService和TAmazonStorageService的進度事件
我可以看到,最終TIdTCPClientCustom.Connect被調用,並且在該函數中,它爲連接創建了一個默認的IOHandler(如果不存在的話)(除非使用SSL)。如果我可以爲該IOHandler設置OnWorkBegin,OnWorkEnd和OnWork事件,那麼我可以跟蹤進度,但是我無法看到這樣做。
如果使用SSL連接,則創建一個IOHandler(例如,在TAzureBlobService.PrepareRequest中),但IOHandler是一個接口並且沒有OnWorkBegin等屬性。
我認爲解決的辦法是創建TAzureBlobService或TAmazonStorageService的後代類,然後重寫PrepareRequest方法。因爲我可以訪問TCloudHTTP實例(因爲它是在PrepareRequest中創建的),並且我可以訪問IOHandler。但是,我如何創建IOHandler(因爲它被定義爲一個接口)並設置了事件(它不是該接口的一部分)?
由於
感謝您的指針,我現在想通了。在我的替換PrepareRequest函數中,我只需使用(Result.Peer.GetObject作爲TIdTCPClientCustom).OnWorkBegin:= abc來設置工作事件。 PrepareRequest的結果是TCloudHTTP。 – Mick 2012-02-24 00:43:31