Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#许多URL请求,处理时间很长_C#_String_Multithreading_Httpwebrequest - Fatal编程技术网

C#许多URL请求,处理时间很长

C#许多URL请求,处理时间很长,c#,string,multithreading,httpwebrequest,C#,String,Multithreading,Httpwebrequest,我必须向以下URL发送大约120个URL请求 HttpWebRequest r = (HttpWebRequest)WebRequest.Create("https://play.google.com/store/search?q=" + keyword + "&c=apps&hl=en"); 如果每个请求中的关键字不同,我会获取响应页面,处理页面并从响应页面中提取应用程序的数量,其中包括字符串操作。但处理这120个请求需要一分钟以上的时间 我在考虑多线程,但同时,你能建议一些

我必须向以下URL发送大约120个URL请求

HttpWebRequest r = (HttpWebRequest)WebRequest.Create("https://play.google.com/store/search?q=" + keyword + "&c=apps&hl=en");
如果每个请求中的关键字不同,我会获取响应页面,处理页面并从响应页面中提取应用程序的数量,其中包括字符串操作。但处理这120个请求需要一分钟以上的时间


我在考虑多线程,但同时,你能建议一些更有效的事情,所以我把时间减少到最多1-2秒

您不太可能将处理时间缩短到1-2秒。当然,通过优化,您可能可以在这里和那里节省一些时间,其中一部分将受到硬件和互联网连接的限制


除了拥有多核处理器和使用大量线程外,时间不会减少那么多。多线程可能是最好的选择,但这样做不会使性能提高300-600%。

通过调用
GetResponseAsync
而不是
GetResponse
异步执行调用。这允许您同时发送多个请求。但请记住,可以同时处理的请求数量是有限的。所以你只能获得有限的速度提升,但值得一试


处理请求的结果只需要总时间的一小部分。通信占用了大部分时间,因此使用多线程处理结果不会有多大帮助。

这样做需要一些时间,这并不奇怪。。。创建web请求需要一些额外的握手,我想总的操作大约是500毫秒-1秒。您提到使用多线程。。。你能举个例子说明你的尝试和结果吗?我相信如果你在实施过程中遇到困难,社区会提供帮助。我不认为你能在1-2秒内完成120个请求。但即使你有资源,我认为谷歌会阻止你,因为这么多的连接,我真的很感谢社区的回应。但是我想实现多线程,我需要你的建议。我有两个主要任务I)使用Web请求从URL获取数据ii)处理数据、字符串操作等。。。问题是,如果我为每个任务创建两个线程,但第二个任务将不得不等待第一个线程的输入,所以它有点无用。或者你能建议我在这种情况下能做得最好吗?多亏了lotHi,我没有找到GetResponseAsync方法,我看到我使用的是.NET4.0,可能在更高版本的.netYes中支持它
GetResponseAsync
是在.NET Framework 4.5中引入的。还有一种方法,使用起来有点困难,但也可以异步工作。