2014-12-04 55 views

回答

7

每個人都應該分開適合你的系統上從Process對象中運行的操作系統的過程,代表一個在你的程序「處理」給它:

  • 的過程繼續運行,直到它完成,或者使用特定於操作系統的方法殺死它
  • Process對象被丟棄,因此您的程序不能再與OS進程交互。

調用Dispose()方法對Process對象不殺死OS進程。

0

進程將運行util關閉它。它不會因爲進程的對象範圍結束而死亡。

+0

範圍無關這個問題 – 2014-12-04 18:06:36

+0

@SriramSakthivel OP採用了'using',所以他期待的過程,如果對象超出範圍就不行了。 – 2014-12-04 18:07:36

+0

是的,他用'使用'與範圍有關嗎? – 2014-12-04 18:08:25

1

如您所知,using聲明會調用Dispose方法,所以流程實例將被Disposed。

要與流程交互,獲取您需要的流程相關信息Handle to the Process。 .Net框架內部持有句柄,並承擔所有的痛苦。配置將關閉進程Handle,因此您將無法再使用Process對象。

而且最重要的是:你開始的過程沒有任何反應,它運行起來就好像沒有任何反應。真的什麼都沒有發生,你剛剛失去了門的關鍵,並不意味着房間被摧毀。

0

進程將繼續運行。您可以將進程p移動到類成員,並停止OnStop中的進程,以確保您可以在exe發生故障時再次停止服務。

protected override void OnStop() 
{ 
    p.Kill(); 
} 
相關問題