使用 WebClient.DownloadFile() 处理超时
使用WebClient.DownloadFile()
进行文件下载有时会因网络问题或无法访问的资源而导致无限期的延迟。 为了防止这种情况,实现超时机制至关重要。
创建自定义 WebClient 类
解决方案是创建一个继承自 WebClient
的自定义类,允许您为底层 WebRequest
设置超时值。方法如下:
<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>
使用自定义类
此自定义TimedWebClient
可以像标准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>
此方法可确保文件下载在指定的超时后终止,从而防止您的应用程序因网络或访问问题而无限期挂起。 超时设置以毫秒为单位。
以上是如何在 WebClient.DownloadFile() 中实现超时以防止无限期等待?的详细内容。更多信息请关注PHP中文网其他相关文章!