有一个Web服务器包含几个长文件(> 500Kb),其中包含不同类别的新闻。我只需要获取每个类别的最新消息,文件的第一行(通常<1Kb但可以更多)并快速下载,因为连接速度慢,我的想法是逐行读取所以下载最小数据量。目前我执行下面的代码,但是下载完整文件所花费的时间似乎并没有太大改进。
foreach(var newsType in newsTypes)
{
var request = WebRequest.Create("http://www.xxxx.com/" + newsType) as HttpWebRequest;
request.Timeout = 5000;
using (var response = request.GetResponse() as HttpWebResponse)
{
using (var reader = new StreamReader(response.GetResponseStream()))
{
while (!reader.EndOfStream)
{
var fileRowCSV = reader.ReadLine();
...
if (old-news) break;
...
}
}
}
是否存在我需要修改的设置,以便不是所有文件都被传输了? 我可以以某种方式重用一个可以读取其他文件的连接吗? 关于如何改进流程的任何想法?
由于
答案 0 :(得分:0)
我认为在.NET Framework中没有内置的方法可以做到这一点。但是,如果您希望简单地加快整个过程,您可以(相对容易地,我认为)并行化外部foreach
循环。
或者,here是一个MSDN示例,显示从Web下载文件的进度。您应该能够使用该示例中的代码来完成您想要的任务:在每X个字节后,检查您是否已到达old-news
,如果是,则取消下载。公平警告,这不仅仅是几行代码。