0

このコードを使用して、URL からファイルをダウンロードします。

Stream stm = myHttpResponse.GetResponseStream();
byte[] buff = new byte[4096];
Stream fs = new FileStream("c:\\file1.txt", FileMode.Append , FileAccess.Write);
int r = 0;

while((r = stm.Read(buff, 0, buff.Length)) > 0)
{
    fs.Write(buff, 0, r);
}

20 個のファイルを (異なる URL から) 同時にダウンロードしたい場合、20 未満のスレッドで実行できますか?

編集

HttpWebResponse には async メソッドがありません。ストリームの BeginRead/BeginWrite の例を期待していました。Threadpool のスレッドを消費しないと思います

4

2 に答える 2

1

Task Parallel Libraryそのために(TPL)を使用できます。を設定しDegree of Parallelismます。あなたのシナリオで。19 に設定します。

于 2013-03-08T08:43:25.277 に答える
0

いいえ、 20 未満のスレッドで20 の同時ダウンロード ストリームを持つことは不可能です。ThreadPool.QueueUserWorkItem を使用してスレッド数を制限することもできますが、それは同時 IMO ではありません。とにかく、WebClient クラスとそのDownloadFileAsyncメソッドを使用することをお勧めします。

WebClient client = new WebClient();
client.Credentials = new NetworkCredential("username", "password");
client.DownloadFileAsync(uriString,fileName);
于 2013-03-08T08:54:31.400 に答える