Maison >développement back-end >C++ >Comment définir un délai d'attente pour WebClient.DownloadFile() ?
Gérer efficacement les délais d'attente de WebClient.DownloadFile()
La définition d'un délai d'attente pour la méthode WebClient.DownloadFile()
est essentielle pour éviter de longs retards lors du téléchargement des fichiers. Cet article explorera une solution efficace pour définir un délai d'attente pour cette opération.
Nous allons créer une classe dérivée appelée WebDownload
qui hérite de la classe de base WebClient
. La classe personnalisée introduira l'attribut Timeout
, nous permettant de définir la valeur de délai d'attente souhaitée.
Voici le code C# de la classe WebDownload
:
<code class="language-csharp">using System; using System.Net; public class WebDownload : WebClient { public int Timeout { get; set; } public WebDownload() : this(60000) { } public WebDownload(int timeout) { this.Timeout = timeout; } protected override WebRequest GetWebRequest(Uri address) { WebRequest request = base.GetWebRequest(address); if (request != null) { request.Timeout = this.Timeout; } return request; } }</code>
En remplaçant la méthode GetWebRequest
, nous pouvons intercepter l'objet WebRequest
et modifier ses propriétés Timeout
en fonction de la valeur de délai d'attente spécifiée par la classe personnalisée. Désormais, lorsque vous utilisez la classe WebDownload
, il vous suffit de fournir la durée du délai d'attente en millisecondes lors de l'initialisation.
Par exemple :
<code class="language-csharp">WebDownload client = new WebDownload(30000); // 设置 30 秒超时 client.DownloadFile("http://example.com/file.zip", "file.zip");</code>
Cela lancera un téléchargement de fichier avec un délai d'attente de 30 secondes. Si le téléchargement ne peut pas se terminer dans ce délai, une exception est levée, vous permettant de gérer la situation avec élégance et d'éviter des retards inutiles.
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!