如何远程运行一个进程(任务)并等待它完成?

时间:2018-10-23 08:54:01

标签: c# parallel-processing task

我已经根据自己的需要创建了一个简单的“作业计划程序”。它会查找写入文件的作业规范,然后启动多个任务以并行运行作业。

它等待每个任务完成,然后检查是否还有更多作业要完成。

这对我来说很好,但是我现在想使用第二台服务器来运行一些作业。有没有一种方法可以在远程计算机上启动作业,并且以某种方式收到完成时间的通知?我知道WMI是一种选择,但想知道WMI(或其他东西)是否可以轻松地适合以下结构。

这是我在一台计算机上的操作方式(非常简化):

List<Taskdata> TaskList = new List<Taskdata>();
string[] JobsToAdd = GetListFromSomewhere();

 foreach (var jobString in JobsToAdd)
 {
       var LastTask = new Task(RunProc, jobString);
       LastTask.Start();
       TaskList.Add(new Taskdata(LastTask, DateTime.UtcNow));
 }


if (TaskList.Any())
{
       Task.WaitAny(TaskList.Select(x => x.Task).ToArray());
}




public void RunProc(object state)
{
            var process = new Process
            {
                StartInfo = new ProcessStartInfo
                {
                    FileName = Path.Combine(@"H:\Projects\Simulator\Simulator\bin\Debug\", "Simulator001.exe"),
                    Arguments = (string)state,
                    WindowStyle = ProcessWindowStyle.Normal,
                    CreateNoWindow = false
                }
            };
            process.Start();
            process.WaitForExit();
}

0 个答案:

没有答案