超时下载字符串消息
本文关键字:消息 字符串 下载 超时 | 更新日期: 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;
在程序的开头