Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
36 / 36 / 3
Регистрация: 17.07.2008
Сообщений: 581
.NET 2.x

Служба зависает в "Запуск"е

10.10.2016, 21:03. Показов 1478. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем привет. Хочу написать службу, которая будет проверять message queue, и при большом количестве сообщений выполнять Purge. Сам код в консольной аппликации работает, но при службе стартует, и висит статус "запуск"
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
void CheckAndPurgeDfmProducts()
        {
           
            for (; ; )
            {
                StreamWriter sw = new StreamWriter(@"d:\dа.txt", true);
 
                sw.WriteLine("Service is running ...");
                ManagementScope scope = new ManagementScope(@"\" + Environment.MachineName + @"\root\cimv2");
                ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_PerfFormattedData_msmq_MSMQQueue");
 
                ManagementObjectSearcher searcher =
                    new ManagementObjectSearcher(scope, query);
 
                foreach (ManagementObject queryObj in searcher.Get())
                {
                    sw.WriteLine(queryObj["Name"].ToString());
 
                    if (queryObj["Name"].ToString() == "df\\products")
                    {
                        int countmessage = Int32.Parse(queryObj["MessagesinQueue"].ToString());
                       
                        if (countmessage >= 10000)
                        {
                            sw.WriteLine("DFM\\Products message count: {0} - Date:{1}", countmessage, DateTime.Now.ToString());
                            MessageQueue msmq = new MessageQueue("FormatName:Direct=OS:df\\products");
                            msmq.Purge();
                            sw.WriteLine("Automatic Purge");
                        }
 
                    }
 
 
                }
                sw.Close();
                Thread.Sleep(3000);
            }
        }
 protected override void OnStart(string[] args)
        {
            CheckAndPurgeDfmProducts();
        }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.10.2016, 21:03
Ответы с готовыми решениями:

Зависает служба
Доброго времени суток! Проблема в следующем: На сервере стоит служба, которая запускает процедуру в 1С при появлении в каталоге файла....

Служба сама тормозит при запуске
Добрый день. Написал службу, которая работает с одним фалом, затем пишет лог в другой файл. В службе есть таймер, который выполняет...

Служба, которая при каждом запуске будет заносить в некоторый файл список запущеных процессов (Id и имя процесса)
Доброго времени суток, может у кого есть или кто знает как сделать вот такую службу на C#

4
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
10.10.2016, 21:20
Цитата Сообщение от frech Посмотреть сообщение
написать службу, которая будет проверять message queue
frech, как-то сложно...
Может быть, стоит использовать класс MessageQueue, и используя статический метод Exists(), проверять, есть ли такая очередь. Если есть - создать ее через один из методов Create() и потом использовать Purge().
0
36 / 36 / 3
Регистрация: 17.07.2008
Сообщений: 581
10.10.2016, 21:29  [ТС]
insite2012, такая очередь есть. Но мне надо знать количество сообщений в нем. Автоматизировать Purge для этой очереди.
Раньше я писал мониторинг очередей, это приложение работает. Работает по этому (WMI) принципу.
Тот код который я указал работает в приложение, в реальном времени показывает данные. Надо для службы сделать

Добавлено через 1 минуту
Ошибка 1053: Служба не ответила на запрос своевременно
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
10.10.2016, 21:38
Цитата Сообщение от frech Посмотреть сообщение
мне надо знать количество сообщений в нем. Автоматизировать Purge для этой очереди.
Ну тогда в чем проблема, по таймеру или в потоке получайте количество сообщений в очереди, если превышает порог-очищайте ее.
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
10.10.2016, 21:50
Лучший ответ Сообщение было отмечено frech как решение

Решение

Нельзя в методе OnStart службы выполнять методы которые долго выполняются. Запускайте такие методы в отдельном потоке.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.10.2016, 21:50
Помогаю со студенческими работами здесь

Ошибка "Служба не ответила на запрос своевременно" при запуске своей службы
Всем доброго времени суток! Создал проект службы, написал свой код, все спокойно скомпилилось, создал через cmd службу, файл exe...

Unity зависает при запуске
Unity 5 зависает при нажатие на кнопку,я выяснил что проблема в этом коде,что с ним не так - незнаю так как раньше всё работало а щас нет. ...

При запуске зависает форма
Доброго времени суток ! private void StartConnect_Click(object sender, RoutedEventArgs e) { try ...

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

Зависает служба виртуальных дисков при подключении флешки
Мне сделать нужно было через Rufus 3.9 загрузочную флешку с портативной виндой. С 3 часа дня до 3 часа ночи он работал. Остановился на...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru