WebClient.DownloadFile()-Timeouts effizient verwalten
Das Festlegen eines Zeitlimits für die WebClient.DownloadFile()
-Methode ist wichtig, um lange Verzögerungen beim Herunterladen von Dateien zu vermeiden. In diesem Artikel wird eine effiziente Lösung zum Festlegen eines Timeouts für diesen Vorgang untersucht.
Wir erstellen eine abgeleitete Klasse namens WebDownload
, die von der Basisklasse WebClient
erbt. Die benutzerdefinierte Klasse führt das Attribut Timeout
ein, mit dem wir den gewünschten Timeout-Wert festlegen können.
Hier ist der C#-Code für die Klasse WebDownload
:
<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>
Durch Überschreiben der GetWebRequest
-Methode können wir das WebRequest
-Objekt abfangen und seine Timeout
-Eigenschaften basierend auf dem von der benutzerdefinierten Klasse angegebenen Timeout-Wert ändern. Wenn Sie nun die Klasse WebDownload
verwenden, müssen Sie bei der Initialisierung nur noch die Timeout-Dauer in Millisekunden angeben.
Zum Beispiel:
<code class="language-csharp">WebDownload client = new WebDownload(30000); // 设置 30 秒超时 client.DownloadFile("http://example.com/file.zip", "file.zip");</code>
Dadurch wird ein Dateidownload mit einer Zeitüberschreitung von 30 Sekunden eingeleitet. Wenn der Download nicht innerhalb dieses Zeitrahmens abgeschlossen werden kann, wird eine Ausnahme ausgelöst, sodass Sie die Situation reibungslos bewältigen und unnötige Verzögerungen vermeiden können.
Das obige ist der detaillierte Inhalt vonWie lege ich ein Timeout für WebClient.DownloadFile() fest?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!