Поделиться через


Практическое руководство. Создание службы программным способом

Примечание.

Эта статья не относится к размещенным службам в .NET. Последние сведения об использовании Microsoft.Extensions.Hosting.BackgroundService служб Windows и шаблоне рабочей службы см. в следующих статье:

Если вы решили не использовать шаблон проекта "Служба Windows", для создания собственной службы вам придется настроить наследование и другие элементы инфраструктуры самостоятельно. Создавая службу программным способом, вам необходимо выполнить несколько действий, которые в случае с шаблоном выполняются автоматически.

  • Для класса службы необходимо настроить наследование от класса ServiceBase.

  • Для проекта службы необходимо создать метод Main, который определяет запускаемые службы и вызывает для них метод Run.

  • Необходимо переопределить процедуры OnStart и OnStop и добавить код, который они должны выполнять.

Создание службы программным способом

  1. Создайте пустой проект, а затем создайте ссылку на необходимые пространства имен.

    1. В окне Обозреватель решений щелкните правой кнопкой мыши узел Ссылки и выберите пункт Добавить ссылку.

    2. На вкладке .NET Framework найдите System.dll и щелкните Выбрать.

    3. Найдите System.ServiceProcess.dll и щелкните Выбрать.

    4. Щелкните OK.

  2. Добавьте класс и настройте для него наследование от ServiceBase.

    public class UserService1 : ServiceBase
    {
    }
    
    Public Class UserService1
        Inherits System.ServiceProcess.ServiceBase
    End Class
    
  3. Настройте класс службы, добавив следующий код:

    public UserService1()
    {
        ServiceName = "MyService2";
        CanStop = true;
        CanPauseAndContinue = true;
        AutoLog = true;
    }
    
    Public Sub New()
        Me.ServiceName = "MyService2"
        Me.CanStop = True
        Me.CanPauseAndContinue = True
        Me.AutoLog = True
    End Sub
    
  4. Создайте для класса метод Main и с его помощью определите службы, которые будет содержать класс. userService1 — имя класса.

    public static void Main()
    {
        ServiceBase.Run(new UserService1());
    }
    
    Shared Sub Main()
        System.ServiceProcess.ServiceBase.Run(New UserService1)
    End Sub
    
  5. Переопределите метод OnStart и укажите обработку, которая должна выполняться при запуске службы.

    protected override void OnStart(string[] args)
    {
        // Insert code here to define processing.
    }
    
    Protected Overrides Sub OnStart(ByVal args() As String)
        ' Insert code here to define processing.
    End Sub
    
  6. Переопределите все прочие методы, для которых нужно задать определенную обработку, и напишите код, благодаря которому служба будет понимать, что нужно делать в каждом случае.

  7. Добавить установщики, необходимые для приложения службы. Дополнительные сведения см. в руководстве по добавлению установщиков в приложение-службу.

  8. Скомпилируйте проект, выбрав в меню Сборка пункт Собрать решение.

    Примечание.

    Не нажимайте клавишу F5 для запуска проекта — таким способом нельзя запустить проект службы.

  9. Создайте проект установки и настраиваемые действия для установки службы. Пример см. в статье Пошаговое руководство. Создание приложения-службы Windows в конструкторе компонентов.

  10. Установите службу. Для получения дополнительной информации см. How to: Install and Uninstall Services.

См. также