Отдельный список процессов для каждого потока - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, есть глобальный list и функции
List<Process> _runningProcs = new List<Process>(20);
 
        private void WaitForFreeSlot() //ждем освобождения места в списке процессов
        {
            process = Convert.ToInt32(textBox4.Text);
            for (; ; )
            {
                for (int i = _runningProcs.Count - 1; i >= 0; i--)
                {
                    if (_runningProcs[i].HasExited)
                    {
                        _runningProcs[i].Dispose();
                        _runningProcs.RemoveAt(i);
                    }
                }
 
                if (_runningProcs.Count >= process)
                {
                    Thread.Sleep(1000);
                    continue;
                }
                else
                    break;
            }
            Thread.Sleep(4000);
 
        }
 
public void fuse(String site)
{
WaitForFreeSlot();
System.Diagnostics.ProcessStartInfo procStartInfo =
            new System.Diagnostics.ProcessStartInfo("cmd", win + command);
            System.Diagnostics.Process proc = new System.Diagnostics.Process();
            proc.StartInfo = procStartInfo;
            proc.Start();
_runningProcs.Add(proc);
}
как сделать чтобы для разных site создавался отдельный list? прошу проещения если непонятно, задайте наводящий вопрос, не знаю как по другому объяснить(( Получается так, что этот лист используется всеми потоками которые запрашивают fuse и соответственно ждут пока у потока который вызвал раньше завершатся запущенные процессы.

Решение задачи: «Отдельный список процессов для каждого потока»

textual
Листинг программы
var process = _runningProcs[site]; 
while(true)
{
    var tasks = process.Select((p, i) => Task.Run(() =>
    {
        p.WaitForExit();
        p.Dispose();
        process[i] = new Process();//add new process
    })).ToArray();
 
    Task.WaitAny(tasks);                
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы