使用進度條增強您的 HttpClient 檔案下載器
本指南示範如何為使用 HttpClient 建置的檔案下載器新增進度條,解決由於伺服器憑證限製而 DownloadOperations
不可行的場景。
利用 IProgress
.NET 4.5 及更高版本提供 IProgress<T>
接口,非常適合非同步進度更新。 整合IProgress<T>
提供下載進度的即時回饋。
無縫整合的擴充方法
為了輕鬆合併 IProgress<T>
,我們將為 HttpClient
建立一個擴充方法,允許這種簡潔的語法:
<code class="language-csharp">await client.DownloadAsync(DownloadUrl, file, progress, cancellationToken);</code>
詳細實施步驟
擴充方法將執行以下關鍵操作:
HttpClient.ReadAsStreamAsync()
用於高效的非同步流讀取。 IProgress<float>
實例,則此方法將使用 StreamExtensions.CopyToAsync()
來管理進度更新。 這些更新反映了下載位元組數的增加。 StreamExtensions.CopyToAsync()
處理資料複製並同時透過 IProgress<long>
報告進度。 透過使用IProgress<T>
,您可以將進度資訊無縫整合到進度條或其他UI元素中,顯著改善文件下載過程中的使用者體驗。
以上是如何為 HttpClient 檔案下載器新增進度條?的詳細內容。更多資訊請關注PHP中文網其他相關文章!