Ограничить нагрузку на процессор

139
22 июля 2018, 17:50

Пишу что-то вроде софтины для сервера, позволяющей удобно поднимать разные bat-ники ("сервера") из одного места, сохранять их настройки и аргументы и т.д.

Юзаю c# + wpf, вывожу stdin и stderr в модифицированный RichTextBox. Процессами управляю с помощью Job Object-ов.

И вот столкнулся с проблемой. Если где-то запущенный сервер упирается в бесконечный цикл вывода в консоль (а эти ошибки у программистов иногда бывают), то все виснет намертво.

Мало того, что дочерний процесс сам грузит систему, так еще и вывод в окошко програмки сильно замедляет работу.

В случае обычной cmd.exe достаточно было закрыть окно. Даже если в неё улетает куча вывода, все равно она вполне отзывчива к закрытию "по крестику". То ли буфер консоли работает очень быстро, то ли она как-то ограничивает ресурсы, потребляемые запущенным процессом.

Так вот. Можно ли как-то ограничить ресурсы дочернего процесса, дабы не происходило такого? Или все, что я могу сделать - лишь попытаться ускорить вывод сообщений в консоль/отключать их вывод, когда их слишком много?

Видел функционал, похожий на нужный, когда разбирался с Job Object-ами, однако не знаю, правильный ли это путь.

Честно, не знаю, какой код сюда можно добавить, так что говорите - приложу все, что будет нужно.

READ ALSO
Как удалить загруженную рекламу в AdMob?

Как удалить загруженную рекламу в AdMob?

Я инициализирую и загружаю рекламу на старте:

138
С# выяснить содержимое листа при GetType().GetFields

С# выяснить содержимое листа при GetType().GetFields

Мы узнаем количество полей и их значение в классе следующим образом

170
C#. Как список методов передать в метод?

C#. Как список методов передать в метод?

Помогите разобраться!

185
Как перемешать (случайно переставить) элементы в массиве?

Как перемешать (случайно переставить) элементы в массиве?

Есть данные, записанные в массив или генерируемые на летуКак можно получить их случайную перестановку в массиве или другом контейнере?

182