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!