問題タブ [parallel.foreach]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
vb.net - Parallel.for Synclock 内のネストされたループで合計を実行する VB.NET で情報が失われる
以下は、VB.NET (Visual Studio 2010、.NET Framework 4) の Parallel.for ループ内にネストされたループ内で実行中の合計を計算するために開発できた最良の表現です。結果を「合計」で画面に表示する場合、2 つの合計にはわずかな違いがあるため、並列化されたバリアントでは情報が失われることに注意してください。では、どのように情報が失われ、何が起こっているのでしょうか? このコンテキストで現在の金額を維持するための方法論について、誰かが「顕微手術」を提供できますか? (Parallel.for の新規ユーザーへの注意: 通常、0 から始まるメソッドは使用しないため、Parallel.for ステートメントでは、コードが上限として 101-1 を使用するため、I1 は 101 までループします。これは、 MS は、ゼロベースのカウンターを想定して並列コードを開発しました):
c# - Parallel.ForEachの使用におけるエラー
もともと、私は自分のタスクを実行するためにforeachを使用しています。ただし、作業の効率を上げたいと思います。そこで、Parallel.ForEachを使用してタスクを実行したいと思います。
ただし、「オブジェクト参照がインスタンスに設定されていません」というエラーが発生しました。起こりました。
これが私のコードです:
foreach(アイテム内のvar item)とforeach(item.a内のamount)を使用した場合、コードは正常に機能します。
Parallel.ForEachメソッドで何かが足りませんでしたか?
c# - DispatcherTimerがランダムな時間の後に起動を停止するのはなぜですか?
DispatchTimerを毎秒起動するように正しく設定しました-
問題:そして、それは一定期間正しく発火し、その後は発火を停止します。
追加情報: 今、あなたはそれが何をするのか尋ねるかもしれませんか?OneSecondChecker_Tick()メソッドが実行されている場合はtrueに設定され、実行されていない場合はfalseに設定されるクラスレベル(静的)ブール変数があるため、このメソッドの2つのインスタンスが実行されていません。毎秒発砲するように設定されていても同時に。OneSecondChecker_Tick()が遅延なく実行されることを確認することはアプリケーションの要件です。また、無限ループで実行しようとはしていません。OneSecondChecker_Tick()が実行される前に、テーブル値が更新されているかどうかを確認する2番目のチェックがあります。「一種の」がOneSecondChecker_Tick()に実行を通知するのはそのテーブル値です。そのテーブル値は、別のアプリケーションによって更新されます。
メソッド自体の中で、TPLを使用してスレッドを並行して実行するための呼び出しがあります。それが何か関係があるのかどうかはわかりません。
編集 私はまだこれを理解することができませんでした。アプリケーションがフリーズしている可能性があります。しかし、タスクマネージャーはそうは言いません。アプリケーションがタスクマネージャー以外の場所から応答していないかどうかを確認することはできますか?
vb.net - Synclock と Parallel.for で可能性のあるラムダ競合
次の parallel.for を含む入れ子になったループでは、以下の同期クロック内でラムダ カウンター "j1" を使用するのは適切ですか? コードは機能しているようですが、情報が失われているかどうかはわかりません。
「i」の外側のループに parallel.for を使用したいのですが、ラムダがすべての作業にどのように影響するかわかりませんか?
c# - TPL でタスクに名前を割り当てるにはどうすればよいですか
アプリケーションで実行されている多くのタスクを使用します。何らかの理由で一連のタスクが実行されています。これらのタスクに名前を付けて、[並列タスク] ウィンドウを見たときに簡単に認識できるようにします。
別の観点から、フレームワーク レベルでタスクを使用してリストを作成していると考えてください。私のフレームワークを使用する開発者は、自分の仕事にもタスクを使用しています。彼女が Parallel Tasks ウィンドウを見ると、いくつかのタスクについて何も知らないことがわかります。彼女がフレームワーク タスクと自分のタスクを区別できるように、タスクに名前を付けたいと思います。
こんなAPIがあればとても便利です。
または多分:
または作業中もParallel.ForEach
タスクに名前を付けることは可能ですか?
<code>Parallel.ForEach に名前付け構造 (おそらくラムダを使用) を与えて、その名前付けでタスクを作成することは可能ですか?
私が行方不明になっているような API はどこかにありますか?
また、継承されたタスクを使用して ToString() をオーバーライドしようとしました。残念ながら、並列タスク ウィンドウは ToString() を使用しません。
c# - タイプ 'System.OperationCanceledException' の例外が発生しました
Parallel.ForEach ループを実装して何らかの作業を行っていましたが、キャンセルを処理していると思っていたときに、未処理の例外が原因で問題が発生しました。
問題を把握するために、winform で簡単なテスト設定を行いました。開始ボタン、キャンセル ボタン、出力用のラベルがあります。
コード:
プログラムを実行してキャンセル ボタンを押すと (button2_Click をトリガーするため)、次のエラーが発生し続けます。
タイプ 'System.OperationCanceledException' の例外が mscorlib.dll で発生しましたが、ユーザー コードで処理されませんでした
追加情報: 操作はキャンセルされました。
この例外のハンドラがあれば、プログラムは安全に続行できます。
また、デバッガーは Parallel.ForEach セクションを強調表示します。しかし、なぜ???CancellationToken を介してキャンセルを正しく処理したと思います。
ex の例外メッセージでは、明確な説明が得られません:「{"操作がキャンセルされました。"}」ええと...ええ....それが意図されていました...
私は何を見落としていますか?よろしく、
マティス
asynchronous - C#で非同期/待機および並列
いつasync/awaitを使用する必要があり、いつC#でparallel.foreachを使用する必要がありますか?parallelとasync/awaitは同じ目的を果たしますか?それらの違いは何ですか?
c# - Parallel ForEach - 連続呼び出しは長持ちします
次のプロセスを並列化するために、基本的に並列の方法で反復する関数があります。
- ウェブページを取得する
- HTML コードを解析する
- 結果を返し、結果コレクションに追加する
問題は、最初の実行に約 5 分、2 回目の実行に約 40 分かかることです。入力コレクションは変更されていないため、実行時間はほぼ同じです。何か案が?
GetPrices(int) を含めました。これが 2 回目に実行されると、netstat で 0 接続から開始されます (したがって、最初に使用可能な接続を使い果たすことはありません) が、5 接続までしか増加しません (最初の実行では 30 でした)。
また、返品コレクションをロックする必要があると思いますか?
c# - 並列処理、Parallel.ForEach でプログラムがハングする
特定のディレクトリとそのサブディレクトリのファイルで特定の文字列を見つけるために parallel.foreach を使用するプログラムを作成しようとしています。反復の約 90% で正常に動作しますが、その後プログラムがハングし、実行されません。なんでも。
pbMakeProgress はプログレス バーの値を更新し、updateList はリスト ボックスを更新します。getAllDirectories はサブディレクトリを取得します。directorys は、トラバースされるすべてのフォルダの名前を含むリストです。
c# - ローカルの init ラムダから Parallel.ForEach ループを終了する最良の方法は何ですか?
私のParallel.ForEach
ループには、「ローカル初期化」ラムダで初期化する必要があるオブジェクトがいくつかあります。これらのオブジェクトのいずれかが初期化に失敗した場合、並列ループ全体を終了したいと考えています。これを行う最善の方法は何ですか?