2009-11-12 8 views
0

J'ai deux classes: la classe Action, qui a une méthode d'exécution des fichiers VBScript, et la classe Item qui contient une liste d'instances d'action. Mon problème est que je veux limiter le nombre de fichiers VBScript qui peuvent être exécutés en même temps. Je n'ai aucune expérience avec cela, et j'ai fait des recherches googles autour, mais je n'ai rien trouvé. Ma seule idée de la façon de faire est est présenté ici:Limiter le nombre de processus créés

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); 
       } 
      } 
     } 
    } 
} 

L'exigence de limiter le nombre de processus créés me semble commun, mais comme je le disais, je n'ai pas été en mesure de trouver des échantillons que je pouvais Construire. Ma question est la suivante: quelle est la manière habituelle de faire cela? (Je n'ai pas non plus été capable de trouver des échantillons ici sur StackOverFlow, donc s'il y en a, veuillez poster le lien). Tout indice ou lien est le bienvenu.

+0

Est-ce que cela doit être marqué à la fois par [processus] et [proc]? Voir http://meta.stackexchange.com/questions/107791/how-should-the-proc-tag-be-split-up –

Répondre

0

Eh bien ce que vous avez va fonctionner.

Je ne sais pas ce que le fait que vous ne pouvez pas trouver plus d'informations vous le dit. C'est soit que vous essayez de résoudre un non-problème - mais si vos scripts sont volumineux et complexes ou nécessitent un accès à des ressources partagées, alors limiter le nombre de ceux-ci semble être une bonne idée; ou c'est que votre solution est la bonne et c'est si trivial que personne d'autre n'a pensé à la soulever.

+0

Merci pour le commentaire. L'idée était de permettre à l'utilisateur de limiter le nombre de processus pour ajouter une certaine flexibilité. Je suppose que je vais devoir faire quelques tests. –

Questions connexes