C # о службе Windows - PullRequest
       0

C # о службе Windows

0 голосов
/ 28 марта 2011

Какой будет краткий пример со службой Windows и как ее установить и запустить?

Я искал в Интернете, но в том, что я пробовал, ничего не было написано в методе On Start.Плюс, когда я пытался установить его, ошибка OpenSCManager продолжает появляться.

Ответы [ 3 ]

3 голосов
/ 28 марта 2011
  1. Найти утилиту установки в C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe

  2. Затем запустить InstallUtil.exe "c:\myservice.exe"

  3. Перейти к services.mscа затем найдите и запустите службу

0 голосов
/ 28 марта 2011

В моем ответе на этот вопрос приведены пошаговые инструкции по созданию службы Windows в C #.

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

InstallUtil.exe входит в состав .NET начиная с версии 1.1, поэтому он должен быть в вашей системе.Однако вы, скорее всего, не сможете использовать его из «обычной» командной строки.Если у вас установлена ​​Visual Studio, откройте командную строку Visual Studio.Это определит соответствующие переменные среды, которые делают InstallUtil доступным без указания пути.

Обратный вызов OnStart() дает вам возможность запустить бизнес-логику вашего сервиса.Если вы ничего не сделаете в обратном вызове OnStart(), ваша служба будет немедленно закрыта.Как правило, вы запускаете поток, который выполняет интересующую вас работу. Вот небольшой пример, чтобы показать вам, как он выглядит.

private static System.Timers.Timer _timer;

private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
    // Write a message to the event log.
    string msg = String.Format("The Elapsed event was raised at {0}", e.SignalTime);
    EventLog.WriteEntry(msg, EventLogEntryType.Information);
}

protected override void OnStart(string[] args)
{
    // Create a timer with a 10-econd interval.
    _timer = new System.Timers.Timer(10000);

    // Hook up the Elapsed event for the timer.
    _timer.Elapsed += new ElapsedEventHandler(OnTimedEvent);

    // Signal the timer to raise Elapsed events every 10 seconds.
    _timer.Start();
}

protected override void OnStop()
{
    // Stop and dispose of the timer.
    _timer.Stop();
    _timer.Dispose();
}

Выполнение чего-то подобного эффективно поддержит работу вашего сервисапока он не выключится.Надеюсь это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...