0

重複の可能性:
同時非同期 I/O 操作の量を制限するにはどうすればよいですか?

文字列配列があるとしましょう

string[] domains = { "domain1.com", "domain2.com" ,..., "domain100.com"};

5 つのスレッドを使用してこれらのドメインに要求を送信し、応答ヘッダーを開始順に同じログ ファイルに保存するアプリを作成したいと考えています。例えば:

Thread 1
domain1.com
Response header


Thread 2
domain2.com
Response header


Thread 3
domain3.com
Response header

Thread 4
domain4.com
Response header


Thread 5
domain5.com
Response header


Thread 1
domain6.com
Response header

Thread 2
domain7.com
Response header

私はマルチスレッドのプログラミングが初めてなので、助けていただければ幸いです。どうもありがとう

4

2 に答える 2

2

ボンネットの下で作成されたスレッドの数を気にする必要はありません。スレッドプールは、スレッド作成を最適化することでこれを処理します。コードは次のようになります。

string[] domains = { "domain1.com", "domain2.com",...., "domain100.com" };

var client = new HttpClient();
var tasks = domains.Select(domain => client.GetAsync(domain)
                               .ContinueWith(task =>
                               {
                                   HttpResponseMessage response = task.Result;
                                   var headers = response.Headers;
                                   //Write to log file
                               }));

await Task.WhenAll(tasks);
于 2012-10-28T09:39:53.227 に答える
1

RX拡張機能を使用します。

Paul Betts は RX 拡張機能の優れた概要を説明し、今年初めの NDC カンファレンスであなたの問題を正確に解決しました。

ビデオはNDC の Web サイトで入手可能

于 2012-10-28T09:23:46.047 に答える