使用 WebClient.DownloadFile() 處理逾時
使用WebClient.DownloadFile()
進行檔案下載有時會因網路問題或無法存取的資源而導致無限期的延遲。 為了防止這種情況,實現超時機制至關重要。
建立自訂 WebClient 類別
解決方案是建立一個繼承自 WebClient
的自訂類,讓您為底層 WebRequest
設定超時值。方法如下:
<code class="language-csharp">using System; using System.Net; public class TimedWebClient : WebClient { public int TimeoutMilliseconds { get; set; } public TimedWebClient() : this(60000) { } // Default timeout: 60 seconds public TimedWebClient(int timeoutMilliseconds) { TimeoutMilliseconds = timeoutMilliseconds; } protected override WebRequest GetWebRequest(Uri address) { var request = base.GetWebRequest(address); if (request != null) { request.Timeout = TimeoutMilliseconds; } return request; } }</code>
使用自訂類別
此自訂TimedWebClient
可以像標準WebClient
一樣使用:
<code class="language-csharp">// Set a 30-second timeout var timedClient = new TimedWebClient(30000); // Download the file timedClient.DownloadFile("http://example.com/file.zip", "localfile.zip");</code>
此方法可確保檔案下載在指定的逾時後終止,從而防止您的應用程式因網路或存取問題而無限期掛起。 超時設定以毫秒為單位。
以上是如何在 WebClient.DownloadFile() 中實作逾時以防止無限期等待?的詳細內容。更多資訊請關注PHP中文網其他相關文章!