Timeouts für WebClient.DownloadFile() implementieren
Um unbestimmte Verzögerungen beim Herunterladen von Dateien von möglicherweise langsamen oder nicht reagierenden Servern zu verhindern, ist die Implementierung eines Timeouts für WebClient.DownloadFile()
unerlässlich. Dieses Beispiel zeigt eine benutzerdefinierte Lösung:
Wir erstellen eine abgeleitete Klasse WebDownload
, die von der Basisklasse WebClient
erbt:
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; } }
Die Timeout
-Eigenschaft wird in Millisekunden festgelegt und steuert das Download-Timeout.
Die Verwendung ist unkompliziert: Instanziieren Sie die Klasse WebDownload
und verwenden Sie sie wie die Standardklasse WebClient
:
using (WebDownload client = new WebDownload(10000)) // 10-second timeout { client.DownloadFile("http://example.com/file.zip", "file.zip"); }
Dieser Ansatz stellt sicher, dass Ihr Download-Vorgang nicht auf unbestimmte Zeit hängen bleibt, wenn auf die Datei nicht zugegriffen werden kann oder der Server nicht reagiert, und bietet so eine robuste Lösung für Datei-Downloads.
Das obige ist der detaillierte Inhalt vonWie implementiert man ein Timeout für WebClient.DownloadFile()?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!