从C#中的多个Web文件中读取第一行的有效方法

时间:2012-09-21 20:46:26

标签: c# web

有一个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;
                ...
        }
    }
}

是否存在我需要修改的设置,以便不是所有文件都被传输了? 我可以以某种方式重用一个可以读取其他文件的连接吗? 关于如何改进流程的任何想法?

由于

1 个答案:

答案 0 :(得分:0)

我认为在.NET Framework中没有内置的方法可以做到这一点。但是,如果您希望简单地加快整个过程,您可以(相对容易地,我认为)并行化外部foreach循环。

或者,here是一个MSDN示例,显示从Web下载文件的进度。您应该能够使用该示例中的代码来完成您想要的任务:在每X个字节后,检查您是否已到达old-news,如果是,则取消下载。公平警告,这不仅仅是几行代码。