创建可变数量的线程

时间:2013-09-20 10:44:24

标签: c# multithreading process foreach

感谢阅读。

我编写了一个试图关闭应用程序所有进程的应用程序,如果进程在60秒后无法正常关闭,则会终止该进程。

foreach (Process obj in Process.GetProcessesByName(application_name))
{
     logyaz("Waiting for " + obj.ProcessName + " to exit at " + DateTime.Now);
     obj.CloseMainWindow();
     obj.WaitForExit(60000);
}

这是等待进程关闭的地方。它完美无缺。

但我想实施一些东西。我不想一个接一个地等待所有进程,我想创建线程和进程一样多,并缩短等待时间。

之前我创建了线程,但它是硬编码的,我从来没有创建它们的动态数量。

那你建议我做什么呢?

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

尝试使用并行编程。

    Parallel.ForEach(Process.GetProcessesByName(application_name),
        (Process obj) =>
        {
            logyaz("Waiting for " + obj.ProcessName + " to exit at " + DateTime.Now);
            obj.CloseMainWindow();
            obj.WaitForExit(60000);
        });

Parallel是一个静态类,它为您提供了创建易于阅读的多线程代码的机会。多亏了这一点,你不仅可以创建并行的foreach循环,还可以创建循环并保存执行结果。