dir.by  
  Поиск  
Программирование, разработка, тестирование
Windows Service (используя C#)
Создаем новое приложение C# Windows Service (библиотека .NET Core и использую Worker)
  Посмотрели 2008 раз(а)    
 Создаем новое приложение C# Windows Service (библиотека .NET Core и использую Worker) 
последнее обновление: 17 апреля 2023
Скачать мой сервис с исходным кодом:
MyWorkerServiceCore1.zip ...
размер: 200 kb
Шаг 1. Открываем Visual Studio
Если у вас не установлена Visual Studio нужно установить Visual Studio...
Открываем Visual Studio 2022
или
Открываем Visual Studio 2019
Шаг 2. Создаем новое приложение с типом Worker Service
 
Создастся вот такой проект:
Шаг 3. Добавляем библиотеку WindowsServices
Добавляем NuGet пакет Microsoft.Extensions.Hosting.WindowsServices.
Этот пакет нужен, чтобы программа работала как WindowsService.
Шаг 4. Добавляем библиотеку, чтобы сохранять информацию, ошибки в системный EventViewer
Добавляем NuGet пакет Microsoft.Extensions.Logging.
Этот пакет нужен, чтобы сохранять информацию, ошибки в системный EventViewer.
Когда сервис работает, то единственный способ сохранять информацию, ошибки это писать в EventViewer.
Шаг 5. Добавляем код в файл Program.cs
Чтобы программа работала как WindowsService
Файл Program.cs
UseWindowsService();
Инициализация EventViewer
Файл Program.cs
.ConfigureLogging(options => options.AddFilter<EventLogLoggerProvider>(level => level >= LogLevel.Information))

...

.Configure<EventLogSettings>(config =>
{
    config.LogName = EventLogName;
    config.SourceName = EventLogSource;
});
Пишем информацию в EventViewer
Файл Worker.cs
_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);

 
В результате будет так:
  C#     Файл Program.cs
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.EventLog;

namespace MyWorkerServiceCore1
{
     public class Program
     {
          public static string EventLogName = "My Worker Service1";
          public static string EventLogSource = "My App1";

          public static void Main(string[] args)
          {
               CreateHostBuilder(args).Build().Run();
          }

          public static IHostBuilder CreateHostBuilder(string[] args) =>
               Host.CreateDefaultBuilder(args)
               .ConfigureLogging(options => options.AddFilter<EventLogLoggerProvider>(level => level >= LogLevel.Information))
               .ConfigureServices((hostContext, services) =>
               {
                    services.AddHostedService<Worker>()
                    .Configure<EventLogSettings>(config =>
                    {
                         config.LogName = EventLogName;
                         config.SourceName = EventLogSource;
                    });
               }).UseWindowsService();
     }
}
  C#     Файл Worker.cs
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;

namespace MyWorkerServiceCore1
{
     public class Worker : BackgroundService
     {
          private readonly ILogger<Worker> _logger;

          public Worker(ILogger<Worker> logger)
          {
               _logger = logger;
          }

          protected override async Task ExecuteAsync(CancellationToken stoppingToken)
          {
               while (!stoppingToken.IsCancellationRequested)
               {
                    _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
                    await Task.Delay(1000, stoppingToken);
               }
          }
     }
}
Шаг 6. Запускаем проект
 
Откроем EventViewer
и увидим что наша программа пишет информацию:
 
На заметку!
Чтобы запустить программу как WindowsService нужно:
регистрировать exe файл в системе и запускать как Windows Service...
 
← Предыдущая тема
Создать папку "My Application" в папке "Application and Services logs" | Event Viewer
 
Следующая тема →
Загрузка параметров из appsettings.json для приложения C# Windows Service (библиотека .NET Core и использую Worker)
 
Ваши Отзывы ... комментарии ...
   
Вашe имя
Ваш комментарий (www ссылки может добавлять только залогиненный пользователь)

Картинки

Windows Service (используя C#)  
Технология .NET Framework
Создаем новое приложение C# Windows Service (.NET Framework)
C# Windows Service (.NET Framework) с получением имени пользователя. Событие при входе/выходе пользователя из Windows
Создать папку "My Application" в папке "Application and Services logs" | Event Viewer
Технология .NET Core
Создаем новое приложение C# Windows Service (библиотека .NET Core и использую Worker)
Загрузка параметров из appsettings.json для приложения C# Windows Service (библиотека .NET Core и использую Worker)
Как открыть Notepad приложение из C# Windows Service | библиотека .NET Core и использую Worker
Делаем publish проекта (компилируем и собираем проект) "C# Windows Service" | библиотека .NET Core используя Worker
Как зарегистрировать exe file как Windows Service. Запуск/остановка Windows Service в системе Windows | библиотека .NET Core используя Worker

  Ваши вопросы присылайте по почте: info@dir.by  
Яндекс.Метрика