首页 文章

当Foreach循环中的其他线程正在运行时阻止主线程

提问于
浏览
0

我正在创建一个新线程来在foreach循环的每次迭代期间执行一些代码 . 这些线程完成后,我希望主线程继续执行,但我不知道如何做到这一点 . 我不能为每次迭代调用 Thread.Join() ,因为这将阻止主线程继续foreach循环,直到创建的线程完成 . 这是代码块,其中 testEnvironments 是类型字符串的List:

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

        email.ComposeEmail();

1 回答

  • 4

    您需要将所有 Thread 存储在 List<Thread> 中,并在启动所有 foreach 之后单独创建 foreach 循环 .

    请注意,通过使用 Task 而不是 Thread ,或者更好的是 Parallel.ForEach() ,可以使代码更简单,更高效 .

相关问题