2012-12-12 29 views
0

嘗試創建與2012年VS默認情況下,Windows服務中,有3種方法的服務:如何捕獲服務中的應用程序啓動?

Constructor(say MyService) 
OnStart 
OnStop 

但是當我把一些代碼在構造函數,看起來像只運行一次。

我想要的是:當一個應用程序從Windows啓動,例如notepad.exe,我可以捕獲它。 我應該在構造函數中放置一個死循環來監視進程列表嗎?我認爲服務應該總是像死循環一樣。 所以當一個應用程序啓動它時,如何在MyService中捕獲它?

+0

什麼是 「像一個死循環」?什麼是「死循環」? – spender

+0

我認爲他的意思是一個'while(true){}'循環...不確定.. – SynerCoder

回答

0

我應該在構造函數中放置一個死循環來監視進程列表嗎?

不,那在OnStart()。基本僞代碼:

  • 的OnStart:
    • 建立監督
    • 啓動它
  • 監測:
    • ,而(真)監視進程
    • 如果(停止信號)出口
  • 調用OnStop
    • 給停止信號,監控對象
+0

在OnStart中放置一個無限循環並不是一個好主意,所以*不,在'OnStart'中出現*是誤導。需要指出的是,在'OnStart'中啓動的監控異步*工作,以便服務不斷接收命令! –

+0

謝謝。應用程序啓動時可以捕獲什麼信號?在哪裏進行監測?把代碼放在構造函數和OnStart中有什麼區別? – KentZhou

相關問題