Ответ 1
Мне действительно нужно
Dispose()
каждый объектProcess
и как я могу решить, нужно ли мне это делать?
Да, вы должны их уничтожить. Обратите внимание на этот текст в документации для Process
:
Системный процесс уникально идентифицируется в системе по его идентификатору процесса. Как и многие ресурсы Windows, процесс также идентифицируется его дескриптором, который может быть не уникальным на компьютере. Ручка - это общий термин для идентификатора ресурса. Операционная система продолжает обрабатывать дескриптор процесса, доступ к которому осуществляется через свойство Handle компонента Process, даже когда процесс вышел. Таким образом, вы можете получить административную информацию процесса, такую как ExitCode (обычно либо нуль для успеха, либо ненулевой код ошибки) и ExitTime. Ручки являются чрезвычайно ценным ресурсом, поэтому утечка ручек более вирулентна, чем утечка памяти.
Итак, если вы не Dispose
их, вы потенциально пропустите ручки (пока они не будут собраны мусором), но вся точка Dispose
должна позволить раннюю очистку ресурсов)
Обратите также внимание на то, что в той же документации указано, что Process
переопределяет Dispose(bool)
- еще один ключ, который на самом деле что-то делает, когда вызывается Dispose
.