【发布时间】:2019-03-18 22:29:22
【问题描述】:
我正在尝试从需要很长时间才能加载完整响应(非常长的日志文件)的网站执行多个 Web 请求。我想实现一种方法,该方法将在等待其他请求响应的同时继续创建 Web 请求并加快进程。
尝试实现一个 async-await 方法,但我认为它不会创建同时调用,而是同步运行。我对如何实现异步等待非常困惑,我查看了其他类似的问题但仍然不太清楚,我该如何修复此代码以运行异步?
这是我的代码:
public static async Task<String> MakeRequestAsync(String url)
{
String responseText = null;
try
{
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Proxy = null;
WebResponse response = request.GetResponse();
Stream responseStream = response.GetResponseStream();
string sr = new StreamReader(responseStream).ReadToEnd();
response.Close();
responseStream.Close();
responseText = sr;
}
catch (Exception e)
{
Console.WriteLine("Error: " + e.Message);
}
return responseText;
}
..
private void button_test_Click(object sender, EventArgs e)
{
for (int n = 0; n < 5; n++) //multiple requests
{
String a = AsyncTest().Result;
}
}
private async Task<String> AsyncTest()
{
String b = await MakeRequestAsync(url);
return b;
}
还有关于如何加快这个过程的任何建议都会很棒。
【问题讨论】:
标签: c# multithreading async-await httpwebrequest