Эта статья даст вам обзор службы Windows, а также то, как написать службы Windows для обработки задач, выполняемых в фоновом режиме.

Что такое службы Windows?

  • Службу Windows можно примерно понимать как фоновое приложение в течение долгого времени с момента включения компьютера до его выключения.
  • Он может запускаться автоматически при загрузке компьютера, может быть перезапущен или приостановлен без какого-либо вмешательства пользователя в инструменты, связанные с пользовательским интерфейсом.
  • Может быть легко установлен благодаря встроенному инструменту поддержки Visual Studio exe через командную строку. Вам просто нужно указать доступный каталог исполняемого файла и выполнить его. Итак, вы установили службу Windows.

Зачем использовать WS?

  • Один из наиболее важных запросов клиентов: иметь приложение, работающее в фоновом режиме каждый день для агрегирования данных, используемых для создания отчетов, синхронизации данных с серверов, просмотра, сколько продуктов было продано сегодня, или отправляет электронное письмо пользователям, когда их учетная запись истек, v… v… 😀
  • Создание WS можно рассматривать как оптимальное решение для вышеупомянутых ситуаций, при этом пользователю не нужно вообще манипулировать WS, все выполняется в фоновом режиме на их компьютере / сервере.

Напишите простые оконные службы

С учетом вышеперечисленных проблем в этой статье я расскажу вам, как построить WS от базового до расширенного шаг за шагом 1 (это то, что я узнал из реального проекта, поэтому я хочу поделиться с вами .: D).

Сначала мы создадим проект службы Windows следующим образом.

После создания проекта мы создадим класс Utilities для записи в файл журнала событий WS следующим образом.

public class Utilities
{
     public static void WriteLogError (Exception ex)
     {
         StreamWriter sw = null;
         try
         {
             sw = new StreamWriter (AppDomain.CurrentDomain.BaseDirectory + "\\ LogFile.txt", true);
             sw.WriteLine (DateTime.Now.ToString ("g") + ":" + ex.Source + ";" + ex.Message);
             sw.Flush ();
             sw.Close ();
         }
         catch
         {
             // ignored
         }
     }
     public static void WriteLogError (string message)
     {
         StreamWriter sw = null;
         try
         {
             sw = new StreamWriter (AppDomain.CurrentDomain.BaseDirectory + "\\ LogFile.txt", true);
             sw.WriteLine (DateTime.Now.ToString ("g") + ":" + message);
             sw.Flush ();
             sw.Close ();
         }
         catch
         {
             // ignored
         }
     }
}

Затем мы вернемся к классу Service1.cs, чтобы приступить к реализации основной части Сервиса. В этой вводной статье я сначала сделаю основные шаги, чтобы вы сначала визуализировали поток службы Windows.

public class Service1
{
    private Timer timer = null;
    public Service1 ()
    {
        InitializeComponent ();
    }
 
    protected override void OnStart (string [] args)
    {
        // Create a timer from libary System.Timers
        timer = new Timer ();
        // Execute every 60s
        timer.Interval = 60000;
        // What happens when that timer is ticked
        timer.Elapsed + = timer_Tick;
        // Enable timer
        timer.Enabled = true;
        // Write log file when services dc start for the first time
        Utilities.WriteLogError ("Test for 1st run WindowsService");
    }
  
    private void timer_Tick (object sender, ElapsedEventArgs args)
    {
        // Handle some logic here
        Utilities.WriteLogError ("Timer has ticked for doing something !!!");
    }
  
    protected override void OnStop ()
    {
        // Log when the Services have been stopped
        timer.Enabled = true;
        Utilities.WriteLogError ("1st WindowsService has been stopped");
    }
}

Это довольно просто для понимания, мы будем вызывать функцию timer_Tick каждые 60 секунд, чтобы что-то сделать. Затем мы возвращаемся к дизайну пользовательского интерфейса Service1.cs и щелкаем его правой кнопкой мыши, чтобы создать установщик для нашего WS.

После создания 1 установщика мы перейдем к свойствам, чтобы настроить необходимые вещи, такие как ServicesName и StartType. В этом примере я выберу режим «Руководство» для демонстрации, вы можете использовать его автоматически или отключить.

Затем мы настроим параметры для Process Installer следующим образом. Поскольку для демонстрации я буду использовать локальный компьютер для выполнения, поэтому я выберу Account is LocalSystem.

Вы уже написали 1 службу Windows. Соберите проект и прочтите следующее, чтобы узнать, как установить службу Windows.

Установить службу Windows

Откройте командную строку Visual Studio 2015 следующим образом: Пуск - ›Все программы -› Visual Studio 2015 - ›Инструменты Visual Studio -› Командная строка разработчика для VS2015. Перейдите в каталог отладки Project Windows Service.

Здесь мы будем использовать команду Install, за которой находится имя exe-файла, содержащего Сервис:

InstallUtil “FirstWindowsService.exe”

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

На этом этапе вы, вероятно, понимаете, как построить WS.