有效管理 WebClient.DownloadFile() 逾時
為 WebClient.DownloadFile()
方法設定逾時對於防止檔案下載時出現長時間延遲至關重要。本文將探討一種高效的解決方案來為此操作設定逾時。
我們將建立一個名為 WebDownload
的衍生類,它繼承自基底類別 WebClient
。自訂類別將引入 Timeout
屬性,讓我們可以設定所需的逾時值。
以下是 WebDownload
類別的 C# 程式碼:
<code class="language-csharp">using System; using System.Net; public class WebDownload : WebClient { public int Timeout { get; set; } public WebDownload() : this(60000) { } public WebDownload(int timeout) { this.Timeout = timeout; } protected override WebRequest GetWebRequest(Uri address) { WebRequest request = base.GetWebRequest(address); if (request != null) { request.Timeout = this.Timeout; } return request; } }</code>
透過重寫 GetWebRequest
方法,我們可以攔截 WebRequest
物件並根據自訂類別指定的逾時值修改其 Timeout
屬性。現在,當使用 WebDownload
類別時,您只需在初始化期間以毫秒為單位提供逾時持續時間。
例如:
<code class="language-csharp">WebDownload client = new WebDownload(30000); // 设置 30 秒超时 client.DownloadFile("http://example.com/file.zip", "file.zip");</code>
這將啟動具有 30 秒逾時的檔案下載。如果在此時間範圍內無法完成下載,則會引發異常,讓您可以優雅地處理這種情況並避免不必要的延遲。
以上是如何設定 WebClient.DownloadFile() 逾時?的詳細內容。更多資訊請關注PHP中文網其他相關文章!