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!