use*_*223 2 .net c# multithreading httpwebrequest
我正在使用WebRequest做简单的请求,应用程序只是挂起,直到响应回来.我该如何解决?
我已经阅读了很多主题,他们都说要使用线程.我不知道如何使用它们; 任何人都可以提供以下不挂起用户界面的示例吗?
private string SimpleRequest(String url)
{
WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
string result = reader.ReadToEnd();
stream.Dispose();
reader.Dispose();
return result;
}
private void button1_Click(object sender, EventArgs e)
{
String googleHtml = simpleRequest("https://facebook.com");
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
如果您使用的是c#5.0,那就太容易了
public async void Test1()
{
WebClient wc = new WebClient();
richTextBox1.Text = await wc.DownloadStringTaskAsync("https://facebook.com");
}
Run Code Online (Sandbox Code Playgroud)
您可以将方法转换为awaitable也
private Task<string> simpleRequest(String url)
{
return Task.Factory.StartNew(() =>
{
WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
string result = reader.ReadToEnd();
stream.Dispose();
reader.Dispose();
return result;
});
}
Run Code Online (Sandbox Code Playgroud)
并打电话给
public async void Test2()
{
richTextBox1.Text = await simpleRequest("https://facebook.com");
}
Run Code Online (Sandbox Code Playgroud)
对于C#的较低版本,请参阅其他答案.
| 归档时间: |
|
| 查看次数: |
2787 次 |
| 最近记录: |