首页 > 后端开发 > C++ > 如何在 WebClient.DownloadFile() 中实现超时以防止无限期等待?

如何在 WebClient.DownloadFile() 中实现超时以防止无限期等待?

Patricia Arquette
发布: 2025-01-11 17:36:41
原创
571 人浏览过

How Can I Implement Timeouts in WebClient.DownloadFile() to Prevent Indefinite Waits?

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板