0

foreach ループの各反復中にコードを実行する新しいスレッドを作成しています。これらのスレッドが完了した後、メイン スレッドの実行を継続したいのですが、その方法がわかりません。Thread.Join()作成されたスレッドが完了するまでメイン スレッドが foreach ループを続行するのをブロックするため、反復ごとに呼び出すことはできません。コード ブロックはtestEnvironments次のとおりです。 は文字列型のリストです。

        foreach (string s in testEnvironments)
        {
            myThread = new Thread(() => program.KickoffPricing(s));
            myThread.Start();
            Thread.Sleep(1000);
        }

        email.ComposeEmail();
4

1 に答える 1

5

Threadすべてのsをに格納し、すべてを開始した後にそれらをsするList<Thread>別のforeachループを作成する必要があります。Join()

Taskの代わりにThread、またはさらに良いことに、を使用することで、コードをより単純で効率的にすることができることに注意してくださいParallel.ForEach()

于 2013-01-02T21:40:58.777 に答える