超时下载字符串消息

本文关键字:消息 字符串 下载 超时 | 更新日期: 2023-09-27 18:11:20

我使用这个脚本下载字符串

public class TimedWebClient: WebClient
{
    public int Timeout { get; set; }
    public TimedWebClient()
    {
        this.Timeout = 600000; 
    }
    protected override WebRequest GetWebRequest(Uri address)
    {
        var objWebRequest= base.GetWebRequest(address);
        objWebRequest.Timeout = this.Timeout;
        return objWebRequest;
    }
}

string s = new TimedWebClient {Timeout = 500}.DownloadString(URL);

但是我希望它在超时时显示一条消息。这可能吗?此外,这个脚本使表单无法访问,而加载,这是非常恼人的。

超时下载字符串消息

如果请求超时,方法GetWebRequest()将抛出异常。你只需要抓住被抛出的WebException,例如,通过写

try {
string s = new TimedWebClient {Timeout = 500}.DownloadString(URL);
}
catch(WebException e) {
Console.WriteLine("Some kind of exception has appeared! (Timeout / Resource not available)");
}

关于你的

这个脚本使表单在加载时无法访问,这很烦人

问题,你应该平衡下载任务到另一个线程,以避免这种情况,所以,例如写

Task.Factory.StartNew(() => {
        //Download the resource in this new thread, same code as above
});
注意,这使用了TLP库,所以您需要一个
using System.Threading;
using System.Threading.Tasks;

在程序的开头