我在C#上使用Windows服务创建。我还维护一个状态来恢复一些参数,同时卸载它。我写过如下代码
protected override void OnAfterInstall(IDictionary savedState)
{
SaveInitState(savedState);
base.OnBeforeInstall(savedState);
}
protected override void OnAfterUninstall(IDictionary savedState)
{
RestoreState(savedState);
base.OnAfterUninstall(savedState);
}
当我安装服务然后使用InstallUtil.exe取消它时,我的代码完全正常。即状态正确恢复
但是我遇到以下情况的问题。 如果我首先安装该服务,然后再尝试再次安装它,它会给我错误"服务已经退出"哪个是对的。但是当我在上一步之后卸载它时,服务正在正确卸载,但在这种情况下我的状态没有恢复。
我的猜测是我的覆盖功能 OnAfterUninstall 功能在上述情况下没有调用。我还使用此函数中的事件日志验证了这一点。