Отдельный список процессов для каждого потока - 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);                
}

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

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

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