タグ付けされた質問 「parallel.foreach」

4
Parallel.ForEachを制限するにはどうすればよいですか?
Parallel.ForEach()非同期ループを使用して、いくつかのWebページをダウンロードしています。私の帯域幅は制限されているため、一度にダウンロードできるのはxページのみですが、Parallel.ForEachは目的のWebページのリスト全体を実行します。 Parallel.ForEachの実行中にスレッド数またはその他のリミッターを制限する方法はありますか? デモコード: Parallel.ForEach(listOfWebpages, webpage => { Download(webpage); }); 実際のタスクはWebページとは何の関係もないので、独創的なWebクロールソリューションは役に立ちません。

9
Parallel.ForEachでの入れ子の待機
Metroアプリでは、いくつかのWCF呼び出しを実行する必要があります。実行される呼び出しの数は非常に多いので、並列ループで実行する必要があります。問題は、WCF呼び出しがすべて完了する前に並列ループが終了することです。 これをどのようにリファクタリングして期待どおりに機能させることができますか? var ids = new List<string>() { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" }; var customers = new System.Collections.Concurrent.BlockingCollection<Customer>(); Parallel.ForEach(ids, async i => { ICustomerRepo repo = new CustomerRepo(); var cust = await repo.GetCustomer(i); customers.Add(cust); }); foreach ( var customer in customers ) { Console.WriteLine(customer.ID); …

5
このforeachコードをParallel.ForEachに変換するにはどうすればよいですか?
私は少し混乱していParallel.ForEachます。 それは何でParallel.ForEachあり、それは正確に何をしますか? MSDNリンクを参照しないでください。 簡単な例を次に示します。 string[] lines = File.ReadAllLines(txtProxyListPath.Text); List<string> list_lines = new List<string>(lines); foreach (string line in list_lines) { //My Stuff } この例をどのように書き換えることができParallel.ForEachますか?

4
Parallel.ForEachとTask.RunおよびTask.WhenAll
Parallel.ForEachまたはTask.Run()を使用して一連のタスクを非同期で開始する場合の違いは何ですか? バージョン1: List<string> strings = new List<string> { "s1", "s2", "s3" }; Parallel.ForEach(strings, s => { DoSomething(s); }); バージョン2: List<string> strings = new List<string> { "s1", "s2", "s3" }; List<Task> Tasks = new List<Task>(); foreach (var s in strings) { Tasks.Add(Task.Run(() => DoSomething(s))); } await Task.WhenAll(Tasks);

3
Parallel.ForEach()とforeach(IEnumerable <T> .AsParallel())の比較
Erg、私はReflectorを使用してBCLでこれら2つのメソッドを見つけようとしていますが、見つけることができません。これら2つのスニペットの違いは何ですか? A: IEnumerable&lt;string&gt; items = ... Parallel.ForEach(items, item =&gt; { ... }); B: IEnumerable&lt;string&gt; items = ... foreach (var item in items.AsParallel()) { ... } どちらを使用するかによって異なる影響はありますか?(両方の例の括弧で囲まれた本文で私がしていることはすべてスレッドセーフであると仮定します。)

5
非同期ラムダを使用した並列foreach
コレクションを並行して処理したいのですが、実装に問題があるので、助けが必要です。 並列ループのラムダ内で、C#でasyncとマークされたメソッドを呼び出す場合に問題が発生します。例えば: var bag = new ConcurrentBag&lt;object&gt;(); Parallel.ForEach(myCollection, async item =&gt; { // some pre stuff var response = await GetData(item); bag.Add(response); // some post stuff } var count = bag.Count; 作成されたすべてのスレッドは事実上単なるバックグラウンドスレッドであり、Parallel.ForEach呼び出しは完了を待機しないため、問題はカウントが0で発生します。asyncキーワードを削除すると、メソッドは次のようになります。 var bag = new ConcurrentBag&lt;object&gt;(); Parallel.ForEach(myCollection, item =&gt; { // some pre stuff var responseTask = await GetData(item); …

5
parallel.foreachを解除しますか?
parallel.forループから抜け出すにはどうすればよいですか? 次のようなかなり複雑なステートメントがあります。 Parallel.ForEach&lt;ColorIndexHolder&gt;(ColorIndex.AsEnumerable(), new Action&lt;ColorIndexHolder&gt;((ColorIndexHolder Element) =&gt; { if (Element.StartIndex &lt;= I &amp;&amp; Element.StartIndex + Element.Length &gt;= I) { Found = true; break; } })); 並列クラスを使用すると、このプロセスを大幅に最適化できます。しかしながら; 並列ループを解除する方法がわかりませんか?break;文は、次の構文エラーがスローされます。 中断または継続する囲みループがない
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.