Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
97 / 98 / 58
Регистрация: 29.09.2016
Сообщений: 410

Как реализовать автоматический рестарт IHostedService?

25.02.2020, 15:58. Показов 1096. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть сервис , аналог джоба в MSSQL. Я хочу перед DoWork() один раз вызвать GetAll() , затем в DoWork с этой коллекцией работает перебериая и обрабатывая. И когда коллекция закончится, необходимо , чтоб сервис перезапустился и тогда произошел вызов GetAll() по новой. Кто-то что-то подобное делал?

Как второй вариант, оставить все как есть, сервис запускается лишь один раз , и работает без остановки, а внутри DoWork вызывать метод не GetAll() , а что-то типа GetFirstByFilter(Filter); Тогда из бд будет доставаться по одному элементу, но это будет каждый раз идти запрос, если одна итерация каждую минуту.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
public class TimedHostedService : IHostedService, IDisposable
    {
        private int _executionCount = 0;
        private readonly ILogger<TimedHostedService> _logger;
        private Timer _timer;
        private readonly IServiceProvider _serviceProvider;
        private readonly IStatementQueries _queries;
 
        private readonly object _lockObject = new object();
        
        public TimedHostedService(ILogger<TimedHostedService> logger, IServiceProvider serviceProvider, IStatementQueries queries)
        {
            _logger = logger;
            _serviceProvider = serviceProvider;
            _queries = queries;
        }
    
        public Task StartAsync(CancellationToken stoppingToken)
        {
            _logger.LogInformation("Timed Hosted Service running.");
           
 
            // Вот здесь я бы хотел один раз обратиться к базе данных, вытянуть коллецию нужных элементов GetAll();
 
 
            _timer = new Timer(DoWork, null, TimeSpan.FromMinutes(2), 
                TimeSpan.FromMinutes(1));
    
            return Task.CompletedTask;
        }
    
        private void DoWork(object state)
        {
            lock(_lockObject)
            {
                // Здесь сервис обрабатывает все эти элементы по очереди. 
            }
        }
    
        public Task StopAsync(CancellationToken stoppingToken)
        {
           
        }
    
        public void Dispose()
        {
            _timer?.Dispose();
        }
    }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.02.2020, 15:58
Ответы с готовыми решениями:

Автоматический рестарт при неожиданном завершение приложения
Ребят вот скрипт, который запускает игровой сервер: #Source Dedicated Server Init Script # Server options TITLE='cs001' # Script...

Как реализовать автоматический вывод средст ?
Доброго времени суток. Суть такая... Есть сайт, со своей виртуальной валютой - coins. Как или с помощью чего можно реализовать...

Как реализовать автоматический посимвольный вывод текста?
Подскажите, пожалуйста, как реализовать автоматический посимвольный вывод текста? Допустим, есть какая-то фраза: &quot;Быть или не...

4
163 / 138 / 35
Регистрация: 25.11.2015
Сообщений: 910
25.02.2020, 16:53
Убери костыли, выкинь велосипед, поставь Hangfire и спи спокойно
1
97 / 98 / 58
Регистрация: 29.09.2016
Сообщений: 410
25.02.2020, 17:09  [ТС]
yurickas, почитал, классная тема. Но там последние обновления были 4 месяца назад, под .Net Core 3.0 .
У меня приложение на 3.1. Но попробую , посмотрю, что получится.
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
25.02.2020, 17:23
библиотека не обновлялась 4 месяца? какой ужас)
0
163 / 138 / 35
Регистрация: 25.11.2015
Сообщений: 910
25.02.2020, 17:42
Ну, у меня и под core и под framework работает....

Добавлено через 1 минуту
Да, только если захочешь повесить его на виртуальный хостинг или туда где места мало, то приготовься к боли. Hangfire способен сожрать гига 2-3 в легкую, в зависимости от количества задач.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.02.2020, 17:42
Помогаю со студенческими работами здесь

Автоматический выполнение функции каждый час: как реализовать?
Привет еще раз! Нужно чтобы Эксель автоматически запускал функцию &quot;Обновить все&quot; каждый час. Как реализовать?

Как сделать рестарт?
помогите пожалуйста, не могу понять как сделать рестарт! public class Main { public static Frame frame; public static...

Можно ли реализовать автоматический еженедельный бэкап на сервер в сети из 20-ти ПК ?
имеется сеть из 20 компьютеров, можно ли реализовать автоматический еженедельный бэкап на сервер? сервером будет один из этих компьютеров

Как перезапустить приложение (рестарт)?
Подскажите пожалуйста как перезапустить приложение?

Реализовать автоматический расчет стипендии (Сумма на руки) по следующим условиям
Ребят как можно с помощью кнопок реализовать В поле Минимальная стипендия необходимо предусмотреть ввод числа больше 1000. Для поля...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru