У меня есть два класса: класс Action, который имеет метод для выполнения файлов VBScript, и класс Item, который содержит список экземпляров Action. Моя проблема в том, что я хочу ограничить количество файлов VBScript, которые могут быть запущены одновременно. У меня нет опыта с этим, и я гуглил и искал вокруг, но ничего не нашел. Моя единственная идея, как это сделать, представлена здесь:
using System;
using System.Collections;
using System.ComponentModel;
using System.Diagnostics;
namespace Test
{
public class Action
{
public string Script;
public static int Limit;
public static int ActiveCount = 0;
public Process process = new Process();
public Action(string script)
{
Script = script;
}
public void Execute()
{
process.EnableRaisingEvents = true;
process.Exited += new EventHandler(Handler);
try
{
if (ActiveCount < Limit)
{
process = Process.Start(
"c:\\windows\\system32\\wscript.exe",
"\"" + Script + "\"");
ActiveCount++;
}
}
catch(Win32Exception e)
{
}
}
private void Handler(
object sender, EventArgs e)
{
ActiveCount--;
}
}
public class Item
{
public ArrayList Actions = new ArrayList();
}
class Program
{
static void Main()
{
Action.Limit = 5;
Item item = new Item();
item.Actions.Add(
new Action("C:\\Scripts\\Test_1.vbs"));
for (int i = 0; i < 10; i++)
{
foreach (Action action in item.Actions)
{
action.Execute();
Console.WriteLine(Action.ActiveCount);
}
}
}
}
}
Требование ограничения количества создаваемых процессов мне кажется общим, но, как я уже сказал, я не смог найти никаких примеров, на которых мог бы опираться. Мой вопрос: каков общий или обычный способ сделать это? (Я также не смог найти образцы здесь на StackOverFlow, поэтому, если они есть, пожалуйста, опубликуйте ссылку). Любая подсказка или ссылка приветствуются.