#.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. Да, объект процесса, извините за расплывчатость.