アイテムのリストが長いアプリケーションを継承しました。スレッドを使用してプロセスを高速化する
これはループスルーに数時間かかったので、スレッドを実行して最適化できると思っていました。
例:私のforeachループにブレークポイントを設定すると、私はまだそれが終了する各項目を待つことに気づくが
foreach (var d in data)
{
try
{
ExecutionMethodThread(d);
}
catch (Exception e)
{
}
}
private void ExecutionMethodThread(data d)
{
Thread thread = new Thread(() => MethodThread(d));
thread.Start();
thread.Join();
}
:
foreach (var d in data)
{
try
{
// do alot of logic, takes time
}
catch (Exception e)
{
// catch error
}
}
I iはによってそれを最適化することができると思っ前に移動する前に。 これはobviosly私はループを介して を実行するためにこのリストを期待して以来、私は望んでいないと私は自分のスレッドsimultanioslyを持つ複数のアイテムがあります。
どうすればよいですか?
明確化:
ループ1は、2の項目1を待たずに、スレッドとexecutsロジック
項目を開始し、独自のスレッドとexecuts ロジックなど
を取得項目を開始します
'Parallel.ForEach'。ロジックがスレッドセーフである必要があることに注意してください。 –
あなたが扱うデータ内のすべてのアイテムについて、 'Join 'で計算が完了するのを待つので、同時に複数のアイテムを計算することはないので、マルチスレッドではありません – litelite
@liteelite ? –