首页 >后端开发 >C++ >如何实现 WebClient.DownloadFile() 超时?

如何实现 WebClient.DownloadFile() 超时?

Susan Sarandon
Susan Sarandon原创
2025-01-11 17:57:42467浏览

How to Implement a Timeout for WebClient.DownloadFile()?

为 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn