2014-03-19 93 views
1

運行Windows服務卸載的可執行文件在哪一點?什麼時候可以卸載Windows服務可執行文件?

例如在c#中,Windows服務的常規實現將是創建一個實現了ServiceBase的類的exe,例如,

public class SlicifyClientNodeService : ServiceBase 
{ 
    public static DateTime BootTime = DateTime.Now; 

    protected override void OnStart(string[] args) 
    { 
     //start running 
    } 

    protected override void OnStop() 
    { 
     //stop running 
    } 
} 

當服務啓動/從服務控制面板停止,OnStart中/的onStop方法被調用,但其並不清楚,當像引導時靜態變量將重新初始化。

回答

1

通常,對於只執行單個服務的可執行文件,每當服務停止時進程將終止,並在下一次啓動時重新啓動。

但是,ServiceMain的文檔意味着可以在同一個進程中停止服務並重新啓動服務,在這種情況下,靜態變量將不會重新初始化。據推測,這隻能在停止和開始請求非常接近的情況下才會發生,而且我寧願懷疑事實上即使那樣也不會發生。

無論如何,我會建議你防守編碼,並避免取決於這種行爲;可能會出現特殊情況,或者在未來版本的Windows中可能會更改。

相關問題