Das Herunterladen großer Dateien von langsamen Servern führt häufig zu Timeout-Fehlern, wenn das .NET WebClient
-Objekt verwendet wird. In diesem Artikel werden Lösungen zur Verlängerung der Zeitüberschreitungsdauer untersucht oder alternative Methoden zum Abrufen großer Datensätze vorgeschlagen.
Die Standard-Timeout-Einstellung in WebClient
reicht für langsame Netzwerkverbindungen oft nicht aus. Um dies zu erhöhen, können wir eine benutzerdefinierte WebClient
-Klasse erstellen, die die GetWebRequest
-Methode überschreibt und einen längeren Timeout-Zeitraum festlegt.
Der folgende Codeausschnitt zeigt, wie das Timeout auf 20 Minuten verlängert wird:
<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>
Durch die Verwendung dieser benutzerdefinierten MyWebClient
-Klasse können Downloads fortgesetzt werden, ohne dass es zu Timeout-Ausnahmen kommt.
Obwohl eine Verlängerung des Timeouts von Vorteil ist, wird ein echtes „unendliches“ Timeout von WebClient
nicht direkt unterstützt. Hier sind einige wirksame Alternativen:
Einsatz von BackgroundWorker: Die BackgroundWorker
-Klasse ermöglicht, wenn sie geerbt und ihre DoWork
-Methode überschrieben wird, Downloads innerhalb eines separaten Threads und umgeht so die WebClient
-Timeout-Beschränkungen.
Nutzung von HttpClient: HttpClient
, eine modernere und robustere Alternative zu WebClient
, bietet eine Timeout
-Eigenschaft für benutzerdefinierte Timeout-Einstellungen.
Verwendung von Async/Await: Asynchrone Programmierung mit async
/await
ermöglicht lang andauernde Vorgänge wie Downloads, ohne den Hauptthread zu blockieren. Dieser Ansatz eignet sich, wenn die Thread-Sicherheit nicht im Vordergrund steht.
Das obige ist der detaillierte Inhalt vonWie kann ich Timeout-Einstellungen für das Herunterladen großer Dateien mit dem .NET WebClient anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!