0

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

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

谢谢

4

1 回答 1

0

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

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

于 2012-09-21T21:06:35.293 回答