Должен ли я утилизировать перенаправленный стандартный вывод / StandardError

#.net #process

#.net #процесс

Вопрос:

Если я перенаправляю StandardOutput / StandardError при создании Process объекта, должен ли я утилизировать StreamReaders , когда мне больше не нужен Process объект? Используя reflector, я вижу, что Process.Dispose() это не делает этого для меня (если я чего-то не упускаю).

Ответ №1:

Да, объект process располагает своими собственными считывателями и их базовыми потоками. Перенаправленный вывод извлекает экземпляр reader, но базовый поток по-прежнему управляется processinfo, который утилизируется автоматически, поэтому нет, вам не нужно утилизировать reader.

Комментарии:

1. @Teoman — Я немного смущен, мой класс не создал экземпляр readers. Перенаправление стандартного вывода / input является опцией в классе ProcessStartInfo. Если я установлю ProcessStartInfo.RedirectStandardOutput = true и использую этот ProcessStartInfo для запуска процесса, то объект Process автоматически создаст для меня средства чтения потоков.

2. SFun28, просто провел небольшой тест и обновил ответ. Оказывается, утилизация reader не нужна, поскольку она фактически утилизирует базовый поток. С перенаправленным выводом вы уже читаете перенаправленный внутренний поток, который автоматически закрывается вместе с процессом.

3. круто! И не могли бы вы уточнить, что такое «processinfo»? Вы имеете в виду объект Process?

4. Да, объект процесса, извините за расплывчатость.