Мне нужно сделать нечто подобное, когда я выполняю автоматическое обновление удаленной службы WCF.В вашем методе Restart () закройте хост:
try
{
host.Description.Endpoints.Where(x => !x.Address.ToString().EndsWith("MEX")).ForEach(endpoint => _log.InfoFormat("Closing {0}", endpoint.Address));
host.Close(TimeSpan.FromSeconds(5));
}
catch (Exception)
{
host.Abort();
}
Я ожидаю применения своего обновления, а затем, в случае успеха или неудачи, я снова открываю хост, используя тот же код, который использовался для запускаэто в первую очередь.
Если вы просто хотите немедленно перезагрузить компьютер, вы можете просто вызвать host.Open (), или вы можете настроить таймер для его вызова и т. д.
try
{
host.Open();
host.Description.Endpoints.Where(x => !x.Address.ToString().EndsWith("MEX")).ForEach(endpoint => _log.InfoFormat("Host opened at: {0}", endpoint.Address));
}
catch (Exception ex)
{
_log.Error("Unable to open host.", ex);
}