У меня есть progressBar на моей форме и кнопке. Когда пользователь нажимает на эту кнопку, progressBar следует стилизовать как «выделение», и программа начинает проверять, что URL-адрес действителен или нет. ОК.Как я могу предотвратить зависание пользовательского интерфейса при использовании HttpWebRequest?
Но когда я нажимаю на кнопку, интерфейс замерзает до тех пор, пока HttpStatusCode возвращает истину или ложь ...
Вот код проверки:
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-асинхронно – 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