Heim > Backend-Entwicklung > C++ > Wie implementiert man ein Timeout für WebClient.DownloadFile()?

Wie implementiert man ein Timeout für WebClient.DownloadFile()?

Susan Sarandon
Freigeben: 2025-01-11 17:57:42
Original
484 Leute haben es durchsucht

How to Implement a Timeout for WebClient.DownloadFile()?

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;
    }
}
Nach dem Login kopieren

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");
}
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage