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

Comment puis-je définir un délai d'expiration pour WebClient.DownloadFile() ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-11 17:46:45634parcourir

How Can I Set a Timeout for WebClient.DownloadFile()?

Gestion des délais d'attente avec WebClient.DownloadFile()

La méthode WebClient.DownloadFile() peut parfois entraîner de longues attentes de téléchargement. Pour éviter cela, la mise en œuvre d’un mécanisme de délai d’attente est cruciale. Cela garantit que les téléchargements ne se bloquent pas indéfiniment.

Une solution consiste à créer une classe personnalisée s'étendant WebRequest pour gérer la propriété timeout. Voici comment :

<code class="language-csharp">using System;
using System.Net;

public class WebDownload : WebClient
{
    /// <summary>
    /// Timeout in milliseconds
    /// </summary>
    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>

La classe WebDownload fonctionne comme la classe WebClient standard, mais ajoute une propriété Timeout configurable.

Cette approche permet de contrôler les délais d'attente de téléchargement à l'aide de WebClient.DownloadFile(), évitant ainsi les retards excessifs.

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