為 WebClient.DownloadFile() 實作逾時
為了防止從可能緩慢或無回應的伺服器下載檔案時無限期延遲,為 WebClient.DownloadFile()
實現逾時至關重要。 此範例示範了一個自訂解決方案:
我們建立一個衍生類別 WebDownload
,繼承自基底 WebClient
類別:
<code class="language-csharp">public class WebDownload : WebClient { /// <summary> /// Timeout in milliseconds /// </summary> public int Timeout { get; set; } public WebDownload() : this(60000) { } // Default 60-second timeout 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>
Timeout
屬性(以毫秒為單位)控制下載逾時。
用法很簡單:實例化 WebDownload
類別並像標準 WebClient
一樣使用它:
<code class="language-csharp">using (WebDownload client = new WebDownload(10000)) // 10-second timeout { client.DownloadFile("http://example.com/file.zip", "file.zip"); }</code>
這種方法可確保您的下載操作不會在檔案無法存取或伺服器無回應的情況下無限期掛起,從而為檔案下載提供強大的解決方案。
以上是如何實作 WebClient.DownloadFile() 逾時?的詳細內容。更多資訊請關注PHP中文網其他相關文章!