Maison >développement back-end >C++ >Comment puis-je implémenter des délais d'attente dans WebClient.DownloadFile() pour éviter les attentes indéfinies ?

Comment puis-je implémenter des délais d'attente dans WebClient.DownloadFile() pour éviter les attentes indéfinies ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-11 17:36:41617parcourir

How Can I Implement Timeouts in WebClient.DownloadFile() to Prevent Indefinite Waits?

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

L'utilisation de WebClient.DownloadFile() pour le téléchargement de fichiers peut parfois entraîner des retards indéfinis en raison de problèmes de réseau ou de ressources inaccessibles. Pour éviter cela, la mise en œuvre d'un mécanisme de délai d'attente est cruciale.

Création d'une classe WebClient personnalisée

Une solution consiste à créer une classe personnalisée héritant de WebClient, vous permettant de définir une valeur de délai d'attente pour le WebRequest sous-jacent. Voici comment :

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

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

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

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

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

Utilisation de la classe personnalisée

Cette coutume TimedWebClient peut être utilisée tout comme la norme WebClient :

<code class="language-csharp">// Set a 30-second timeout
var timedClient = new TimedWebClient(30000);

// Download the file
timedClient.DownloadFile("http://example.com/file.zip", "localfile.zip");</code>

Cette approche garantit que les téléchargements de fichiers sont terminés après le délai d'attente spécifié, empêchant ainsi votre application de se bloquer indéfiniment en raison de problèmes de réseau ou d'accès. Le délai d'attente est défini en millisecondes.

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