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

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

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

Здравствуйте, есть глобальный list и функции
Листинг программы
  1. List<Process> _runningProcs = new List<Process>(20);
  2. private void WaitForFreeSlot() //ждем освобождения места в списке процессов
  3. {
  4. process = Convert.ToInt32(textBox4.Text);
  5. for (; ; )
  6. {
  7. for (int i = _runningProcs.Count - 1; i >= 0; i--)
  8. {
  9. if (_runningProcs[i].HasExited)
  10. {
  11. _runningProcs[i].Dispose();
  12. _runningProcs.RemoveAt(i);
  13. }
  14. }
  15. if (_runningProcs.Count >= process)
  16. {
  17. Thread.Sleep(1000);
  18. continue;
  19. }
  20. else
  21. break;
  22. }
  23. Thread.Sleep(4000);
  24. }
  25. public void fuse(String site)
  26. {
  27. WaitForFreeSlot();
  28. System.Diagnostics.ProcessStartInfo procStartInfo =
  29. new System.Diagnostics.ProcessStartInfo("cmd", win + command);
  30. System.Diagnostics.Process proc = new System.Diagnostics.Process();
  31. proc.StartInfo = procStartInfo;
  32. proc.Start();
  33. _runningProcs.Add(proc);
  34. }
как сделать чтобы для разных site создавался отдельный list? прошу проещения если непонятно, задайте наводящий вопрос, не знаю как по другому объяснить(( Получается так, что этот лист используется всеми потоками которые запрашивают fuse и соответственно ждут пока у потока который вызвал раньше завершатся запущенные процессы.

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

textual
Листинг программы
  1. var process = _runningProcs[site];
  2. while(true)
  3. {
  4.     var tasks = process.Select((p, i) => Task.Run(() =>
  5.     {
  6.         p.WaitForExit();
  7.         p.Dispose();
  8.         process[i] = new Process();//add new process
  9.     })).ToArray();
  10.  
  11.     Task.WaitAny(tasks);                
  12. }

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


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

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

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы