我的表单上有一个progressBar按钮。 当用户点击这个按钮时,progressBar应该被设置为“marquee”并且程序开始检查URL是否有效..好吧。如何在使用HttpWebRequest时防止UI冻结?
但是当我点击该按钮,用户界面冻结,直到HttpStatusCode返回true或false ...
下面是校验码:
private bool RemoteFileExists(string url)
{
try
{
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "HEAD";
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
return (response.StatusCode == HttpStatusCode.OK);
}
catch
{
return false;
}
}
这里是按钮,单击代码:
private async void button1_Click(object sender, EventArgs e)
{
this.progressBar1.Style = System.Windows.Forms.ProgressBarStyle.Marquee;
var result = RemoteFileExists("http://www.google.com/");
if (Completed)
{
//ok
}
else
{
//not ok
}
}
检查你应该使用异步方法: http://stackoverflow.com/questions/202481/how-to -use-httpwebrequest-net-asynchronously – Szer
使用'HttpWebRequest.BeginGetResponse()'。看看这里:http://stackoverflow.com/questions/202481/how-to-use-httpwebrequest-net-asynchronously – Icemanind
http://msdn.microsoft.com/en-us/library/system.net.webrequest.getresponseasync (v = vs.110).aspx – Bharadwaj