进程列出不同线程中的项目

Ben*_*zar 1 c# multithreading

目前,我在下面的代码中显示排队等待处理的Job对象列表.

   List<Job> jobList = jobQueue.GetJobsWithStatus(Status.New);
   foreach (Job job in jobList)
   {               
        job.Process();
   }
Run Code Online (Sandbox Code Playgroud)

我有兴趣在有限数量的线程中同时运行几个Jobs(比如5个线程).

在c#中执行此操作的最佳方法是什么?

补充说明:

  • Job对象不与其他作业共享资源.
  • 每个作业大约需要10秒钟来处理.
  • 每个作业都可以连接到不同的资源.

更新:我使用了一个信号量,因为我无法使用ThreadPool限制活动线程的数量.

Ron*_*lic 5

如果您喜欢冒险,可以使用C#4.0和任务并行库:

Parallel.ForEach(jobList, curJob => {
  curJob.Process()
});
Run Code Online (Sandbox Code Playgroud)