2014-12-04 3 views

ответ

7

Нужно отделить процесс ОС, который работает в вашей системе из Process объекта, представляет «ручкой» к нему в вашей программе:

  • процесс продолжает работать до тех пор, пока не завершит , или вы его уничтожаете с использованием специфичных для ОС методов
  • Объект Process удален, поэтому ваша программа больше не может взаимодействовать с процессом ОС.

Вызов метода Dispose() на объекте Process не убивает процесс ОС.

0

Процесс будет запущен, если вы его закроете. Он не будет умирать только потому, что цель объекта «объект» заканчивается.

+0

Область не имеет ничего общего с этим вопросом –

+0

@SriramSakthivel OP использовал 'using', поэтому он ожидает процесс, чтобы умереть, если объект выходит из области видимости. –

+0

Да, он использовал 'использование', как это связано с областью? –

1

Как вы знаете, инструкция using вызовет метод Dispose, поэтому экземпляр процесса будет удален.

Чтобы взаимодействовать с процессом, чтобы получить необходимую информацию о процессе, необходимо Handle to the Process. .Net Framework внутренне держит ручку для процесса и берет на себя всю боль. Dispose закроет процесс Handle, и вы не сможете больше использовать объект Process.

И самое главное: Ничто не происходит с процессом, который вы начали, он работает так, как будто ничего не происходит. На самом деле ничего не произошло, вы просто потеряли ключ от двери, не означает, что комната разрушена.

0

Процесс продолжит работу. Вы можете переместить процесс p члену класса и остановить процесс в OnStop, чтобы убедиться, что вы можете остановить службу еще раз, если exe переходит в haywire.

protected override void OnStop() 
{ 
    p.Kill(); 
} 
Смежные вопросы