Ограничить количество создаваемых процессов - PullRequest
0 голосов
/ 12 ноября 2009

У меня есть два класса: класс 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, поэтому, если они есть, пожалуйста, опубликуйте ссылку). Любая подсказка или ссылка приветствуются.

1 Ответ

0 голосов
/ 12 ноября 2009

Ну, то, что у вас есть, будет работать.

Я не уверен, что говорит тот факт, что вы не можете найти больше информации.

Это либо то, что вы пытаетесь решить не-проблему - но если ваши скрипты большие и сложные или вам нужен доступ к общим ресурсам, тогда ограничение числа запускаемых программ будет хорошей идеей; или дело в том, что ваше решение правильное, и оно настолько тривиально, что никто не подумал поднять его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...