Maison >développement back-end >C++ >Comment définir un délai d'attente pour WebClient.DownloadFile() ?

Comment définir un délai d'attente pour WebClient.DownloadFile() ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-11 17:41:41591parcourir

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

Gérer efficacement les délais d'attente de WebClient.DownloadFile()

La définition d'un délai d'attente pour la méthode WebClient.DownloadFile() est essentielle pour éviter de longs retards lors du téléchargement des fichiers. Cet article explorera une solution efficace pour définir un délai d'attente pour cette opération.

Nous allons créer une classe dérivée appelée WebDownload qui hérite de la classe de base WebClient. La classe personnalisée introduira l'attribut Timeout, nous permettant de définir la valeur de délai d'attente souhaitée.

Voici le code C# de la classe 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>

En remplaçant la méthode GetWebRequest, nous pouvons intercepter l'objet WebRequest et modifier ses propriétés Timeout en fonction de la valeur de délai d'attente spécifiée par la classe personnalisée. Désormais, lorsque vous utilisez la classe WebDownload, il vous suffit de fournir la durée du délai d'attente en millisecondes lors de l'initialisation.

Par exemple :

<code class="language-csharp">WebDownload client = new WebDownload(30000); // 设置 30 秒超时
client.DownloadFile("http://example.com/file.zip", "file.zip");</code>

Cela lancera un téléchargement de fichier avec un délai d'attente de 30 secondes. Si le téléchargement ne peut pas se terminer dans ce délai, une exception est levée, vous permettant de gérer la situation avec élégance et d'éviter des retards inutiles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn