为 WebClient.DownloadFile() 实现超时
为了防止从可能缓慢或无响应的服务器下载文件时无限期延迟,为 WebClient.DownloadFile()
实现超时至关重要。 此示例演示了一个自定义解决方案:
我们创建一个派生类 WebDownload
,继承自基 WebClient
类:
<code class="language-csharp">public class WebDownload : WebClient { /// <summary> /// Timeout in milliseconds /// </summary> public int Timeout { get; set; } public WebDownload() : this(60000) { } // Default 60-second timeout 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>
Timeout
属性(以毫秒为单位)控制下载超时。
用法很简单:实例化 WebDownload
类并像标准 WebClient
一样使用它:
<code class="language-csharp">using (WebDownload client = new WebDownload(10000)) // 10-second timeout { client.DownloadFile("http://example.com/file.zip", "file.zip"); }</code>
这种方法可确保您的下载操作不会在文件无法访问或服务器无响应的情况下无限期挂起,从而为文件下载提供强大的解决方案。
以上是如何实现 WebClient.DownloadFile() 超时?的详细内容。更多信息请关注PHP中文网其他相关文章!