0

ニュースのカテゴリが異なるいくつかの長いファイル (>500Kb) を含む Web サーバーがあります。各カテゴリの最新ニュース、ファイルの最初の行 (通常は 1Kb 未満ですが、それ以上になることもあります) を取得し、ダウンロードをすばやく行うだけで済みます。接続が遅いため、私の考えは、1 行ずつ読んで、最小量のデータ。現時点では、以下のコードを実行していますが、時間がかかるため、完全なファイルをダウンロードしてもあまり改善されないようです。

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 つの接続を再利用できますか? プロセスを改善する方法についてのアイデアはありますか?

ありがとう

4

1 に答える 1

0

.NET Framework でこれを行う組み込みの方法はないと思います。ただし、単純にプロセス全体をスピードアップしたい場合は、(比較的簡単に) 外側のforeachループを並列化できます。

または、Web からファイルをダウンロードする進行状況を表示する MSDN の例を次に示しますこの例のコードを使用して、目的を達成できるはずです。X バイトごとに到達したかどうかを確認し、到達old-newsした場合はダウンロードをキャンセルします。公正な警告ですが、これは単なる数行のコードではありません。

于 2012-09-21T21:06:35.293 に答える