如何在C#

时间:2017-01-31 11:19:24

标签: c#

我有一些目前看起来像这样的代码:

private void GetBatchJobList() //gets the list of JOBS
{
    var queuedJobList = manager.GetAllBatchJobs();
    foreach (var job in queuedJobList)
    {
        ExecuteJob(job.JobName, job.InputList); //for each JOB this method is called
    }
}

private void ExecuteJob(string jobName, string parameter)
{
    switch (jobName)
    {
        case "JobName1":
            OrderJob.JobName1(Convert.ToInt32(parameter)); 
                break;

            case "JobName2":
                OrderJob.JobName2(Convert.ToDateTime(parameter));
                break;
        }
    }

因为你可以看到方法一个接一个地执行。我想并行运行这些方法。 这些功能的实际名称是不同的。 ExecuteJob执行与IO相关的工作。

如何更改我的代码,以便函数调用并行执行,具体取决于条件(JobName == JobName1)。

希望这能解释它。我只是个初学者。 提前谢谢。

1 个答案:

答案 0 :(得分:3)

您可以使用Parallel.ForEach

Parallel.ForEach(manager.GetAllBatchJobs(), job => ExecuteJob(job.JobName, job.InputList))

并行运行取决于系统环境。通常你拥有的cpu越多,运行得越快。但是不要认为Parallel 总是更快。例如。如果作业快速执行且作业很少,那么顺序执行可能会更快。

进一步阅读:Potential Pitfalls in Data and Task Parallelism