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
Libérer: 2025-01-11 17:36:41
original
572 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal