我已经根据自己的需要创建了一个简单的“作业计划程序”。它会查找写入文件的作业规范,然后启动多个任务以并行运行作业。
它等待每个任务完成,然后检查是否还有更多作业要完成。
这对我来说很好,但是我现在想使用第二台服务器来运行一些作业。有没有一种方法可以在远程计算机上启动作业,并且以某种方式收到完成时间的通知?我知道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();
}