Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
32 / 15 / 5
Регистрация: 19.11.2014
Сообщений: 626

Служба запускается, но в статусе остается как остановлена

03.07.2017, 14:29. Показов 3748. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Работаю со службами используя класс ServiceController. Если служба запущена, то ее нужно остановить, если остановлена, то запустить. Решил сделать проверку, что после останова/запуска она точно остановилась/запустилась
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
                ServiceController sc = new ServiceController("Spooler");
                Console.WriteLine(sc.Status.ToString());
                if (sc.Status.ToString() == "Running")
                {
                    sc.Stop();
                    while (true) { if (sc.Status.ToString() == "Stopped") break; }
                }
                if (sc.Status.ToString() == "Stopped")
                {
                    sc.Start();
                    while (true) { if (sc.Status.ToString() == "Running") break; }
                }
                Console.WriteLine(sc.Status.ToString());
                Console.ReadKey();
В итоге, допустим служба остановлена, запускаю программу, служба запускается, но в sc.Status она все равно остается Stopped, соответственно из цикла проверки не выходит. В чем причина?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.07.2017, 14:29
Ответы с готовыми решениями:

Служба "Служба перечислителя переносных устройств" перешла в режим Остановлена
Доброго времени суток. Возникла такая проблема: периодически компьютер просто зависает, ни на что не реагирует. Почитал лог событий, после...

Служба mysql была запущена и затем остановлена
Установил сервер msql как службу на винде. Захожу в службы, выбираю mysql, жму запустить, а он мне пишет "служба mysql была запущена и...

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

6
 Аватар для Людвиг Бодмер
378 / 375 / 213
Регистрация: 29.03.2013
Сообщений: 867
03.07.2017, 15:19
Лучший ответ Сообщение было отмечено Chizel как решение

Решение

Chizel, попробуй делать
C#
1
sc.Refresh();
перед проверкой статуса
1
32 / 15 / 5
Регистрация: 19.11.2014
Сообщений: 626
03.07.2017, 15:24  [ТС]
Вот так работает, спасибо!
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18288 / 14211 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
03.07.2017, 16:25
Цитата Сообщение от Chizel Посмотреть сообщение
C#
1
2
if (sc.Status.ToString() == "Running")
if (sc.Status.ToString() == "Stopped")
Не надо так сравнивать enum-ы. Правильнее так:
C#
1
2
if (sc.Status == ServiceControllerStatus.Running)
if (sc.Status == ServiceControllerStatus.Stopped)
1
32 / 15 / 5
Регистрация: 19.11.2014
Сообщений: 626
03.07.2017, 20:37  [ТС]
OwenGlendower, буду знать, взял на заметку.

Добавлено через 2 минуты
Вообще использовать while(true) нормально, для проверки изменения статуса? А если по какой то причине служба не стартанет, то программа ведь зависнет ожидая изменения статуса. Как тут выкрутиться?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18288 / 14211 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
03.07.2017, 20:51
Цитата Сообщение от Chizel Посмотреть сообщение
Как тут выкрутиться?
Очень просто - убрать цикл. Достаточно одной проверки, если конечно необходимо как-то реагировать что служба не запустилась или не остановилась.
0
32 / 15 / 5
Регистрация: 19.11.2014
Сообщений: 626
03.07.2017, 20:59  [ТС]
OwenGlendower, я хочу реализовать апдейтер для своей службы, то есть при его запуске он должен проверить, запущена ли служба, если запущена, то остановить ее, если следующим шагом сразу начинать заменять файлы, то не правильно ведь это. Если служба не будет остановлена (чисто физически, я ведь не знаю, что система начнет выполнять раньше), а апдейтер начнет файлы заменять, то ничего хорошего не выйдет. Или я ошибаюсь и служба 100% будет остановлена моментально, даже если следующим шагом апдейтера будет замена файлов?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.07.2017, 20:59
Помогаю со студенческими работами здесь

Служба DHCP не запускается и служба автоматического обнаружения веб-прокси WinHTTP
Помогите не запускается служба DHCP пишет ошибку 1075 ,Не удалось запустить службу DHCP-клиент на Локальный компьютер. Ошибка 1075:...

Apache2.2 не запускается как служба
При попытке запустить сервер как службу выдает ошибку "The requested operation has failed". Если же запускать httpd.exe просто в консоли -...

Lotus Domino Не Запускается Как Служба
После обновления Windows и перезагрузки компьютера Lotus Domino перестал запускаться как служба. Lotus Domino v.8.5.3 FP6 (сегодня...

Не запускается служба
Всем привет. Помогите пожалуйста с таким вопросом. Написал службу, написал host который будет её запускать, но когда пытаюсь запустить...

Не запускается служба
Не работает wi-fi. При запуске диагностики выдает сообщение о том, что служба беспроводной связи не запущена. При запуске выдает ошибку....


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru