Подтвердить что ты не робот

Время ожидания запуска службы Windows

Есть ли способ установить другое значение для тайм-аута запуска службы для каждой службы? Я могу изменить его, используя ключ реестра ServicePipeTimeout, но он на машину (http://support.microsoft.com/kb/824344).

В настоящий момент единственное, о чем я думал, это сделать все трудоемкие действия запуска в другом потоке.

4b9b3361

Ответ 1

Хорошая практика - как можно быстрее завершить свое обслуживание. Таким образом, во время состояния начала делайте только то, что вам абсолютно необходимо, чтобы признать, что оно началось успешно; и сделайте остальные позже. Если запуск по-прежнему длительный, используйте SetServiceStatus, чтобы сообщить диспетчеру управления службами, что вы еще не закончили, из вашей службы.

Ответ 2

Я согласен с Ромуло в завершении, чтобы начать ваше обслуживание как можно скорее. Однако, если вам нужно время, и вы используете .NET Framework 2.0 или новее, вы можете использовать метод ServiceBase.RequestAdditionalTime().

http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicebase.requestadditionaltime.aspx

protected override void OnStart()
{
    this.RequestAdditionalTime(10000);
    // do your stuff
}

Ответ 3

Просто делайте время в другом потоке

   protected override void OnStart(string[] args)
    {
        var task = new Task(() =>
        {
            // Do stuff
        });
        base.OnStart(args);
        task.Start();
    }

Ответ 4

Мне также пришлось иметь дело с услугой, которая может занять несколько секунд/минут, чтобы иметь хороший старт. Когда служба запускается, она пытается подключиться к SQL Server. Однако, когда весь сервер был перезапущен, моя служба запускалась до SQL Server. (Я знаю о зависимостях службы, но это не относится к моей ситуации по определенной причине....). Я пытался сделать цикл, пытающийся 10 раз подключиться к SQL Server, но Windows убивала мою службу до второй попытки из-за таймаута.

Мое решение. Я добавил таймер в "onStart()" моей службы. Затем метод "onTick()" службы пытался 10 раз подключиться к SQL Server (с ожиданием 30 в нем). Больше нет времени ожидания при запуске.

Итак, в основном,

  • Моя услуга начинается через 5 секунд.
  • Таймер запускается через 10 секунд после того, как служба начало.
  • Таймер пробует 10 раз [ожидание 30 секунд каждый раз] до подключитесь к SQL Server.
  • Если это произойдет, таймер отключит себя, если нет (после 10 попыток), я остановлю службу.

Обратите внимание на более элегантный способ решения проблемы, но, возможно, какая-то часть моего решения может помочь кому-либо в той же ситуации, что и я,