Maison >développement back-end >C++ >Comment implémenter des délais d'attente avec WebClient.DownloadFile() ?

Comment implémenter des délais d'attente avec WebClient.DownloadFile() ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-11 17:51:42408parcourir

How to Implement Timeouts with WebClient.DownloadFile()?

Définition des délais d'attente pour WebClient.DownloadFile()

Le téléchargement de fichiers distants à l'aide de WebClient.DownloadFile() peut être lent, en particulier avec des fichiers inaccessibles. Un mécanisme de délai d'attente est crucial pour éviter les attentes indéfinies.

Mise en œuvre :

Le moyen le plus efficace d'implémenter un délai d'attente consiste à créer une classe personnalisée héritant de WebRequest. Cela permet de définir la propriété Timeout directement sur la requête sous-jacente. Voici un exemple :

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

public class TimedWebClient : WebClient
{
    public int TimeoutMilliseconds { get; set; }

    public TimedWebClient() : this(60000) { } // Default 60-second timeout

    public TimedWebClient(int timeoutMilliseconds)
    {
        TimeoutMilliseconds = timeoutMilliseconds;
    }

    protected override WebRequest GetWebRequest(Uri address)
    {
        WebRequest request = base.GetWebRequest(address);
        if (request != null)
        {
            request.Timeout = TimeoutMilliseconds;
        }
        return request;
    }
}</code>

Cette TimedWebClient classe fonctionne comme la classe standard WebClient, mais ajoute un délai d'attente configurable. Utilisez-le comme remplacement immédiat, en spécifiant le délai d'expiration en millisecondes. Cela garantit que toutes les tentatives de téléchargement respectent le délai d'attente défini, évitant ainsi de longs délais pour les fichiers indisponibles.

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