使用 .NET WebClient
物件時,從慢速伺服器下載大檔案經常會導致逾時錯誤。本文探討了延長超時持續時間的解決方案或建議了檢索大型資料集的替代方法。
WebClient
中的預設逾時設定通常不足以應付慢速網路連線。為了增加這一點,我們可以建立一個自訂 WebClient
類別來重寫 GetWebRequest
方法並設定更長的逾時時間。
以下程式碼片段示範如何將超時延長至 20 分鐘:
<code class="language-csharp">private class MyWebClient : WebClient { protected override WebRequest GetWebRequest(Uri uri) { WebRequest w = base.GetWebRequest(uri); w.Timeout = 20 * 60 * 1000; // 20 minutes in milliseconds return w; } }</code>
利用此自訂 MyWebClient
類別可以繼續下載而不會遇到逾時異常。
雖然延長超時是有益的,但 WebClient
並不直接支援真正的「無限」超時。 以下是一些有效的替代方案:
使用BackgroundWorker: BackgroundWorker
類別在繼承並重寫其 DoWork
方法時,可以在單獨的執行緒中進行下載,繞過 WebClient
超時限制。
利用 HttpClient: HttpClient
是 WebClient
的更現代、更強大的替代方案,提供用於自訂超時設定的 Timeout
屬性。
利用 Async/Await: 使用 async
/await
進行非同步程式設計可以促進下載等長時間運行的操作,而不會阻塞主執行緒。 當線程安全不是主要問題時,此方法適用。
以上是如何使用 .NET WebClient 自訂大檔案下載的逾時設定?的詳細內容。更多資訊請關注PHP中文網其他相關文章!