Чтобы написать службу, необходим определенный опыт программирования.
Однако мои инструкции помогут даже новичкам.
1.Открываем Visual Studio, создаем проект Windows Service.
2. На экране окажется пустой дизайнер. Переключимся в режим кода. Нажмем для этого правой кнопкой мыши и выберем View Code.
3. Окно уже будет содержать два обработчика события: OnStart и OnStop. Первый выполняется при запуске службы, второй при остановке. Также можно использовать другие обработчики событий: при выключении, при изменении статуса питания (для ноутбуков), пауза и восстановление и возможен перехват сессии.
4. В блок USING добавим ссылку на System.Threading.
5. Создадим новую процедуру которая будет выполняться при запуске службы. Назовем её MyProcess.
6. Необходимость в этом объясняется тем, что на каждое действие службы не должно уходить более 30сек даже не самом медленном компьютере. Поэтому я рекомендую в обработчике запуска службы создавать только новый поток и запускать его на выполнение. Все функциональность вкладывать в новый поток.
7. Напишем процедуру, которую будем выполнять в другом потоке. Например: Я хочу чтобы при старте сервис загружал RSS с lenta.ru и отображал его в гриде в окне.
8. Добавляем в службу Windows Form.
9. Кладем на форму DataGridView, устанавливаем свойство Anchor в Top, Bottom, Left, Right.
10. Устанавливаем у компонента DataGridView свойство Modifiers = Public.
11. Переходим в редактор кода службы и пишем следующий код:
12. Дописываем обработчик OnStart()
13. Переходим на дизайнер службы. Добавляем инсталер.
14. Выделяем ServiceProcessInstaller и меняем Account с User на LocalSystem
15. Значния ServiceInstaller ставим как на рисунке
16. Наша служба почти готова. С помощью ServiceProcessInstaller служба будет устанавливаться в систему. После этого она появится с списке служб.
17. Имейте в виду, чтобы служба могла взаимодействовать с пользователем, нужно чтобы была отмечена галочка "Разрешить взаимодействие с рабочим столом". По-умолчанию после установки службы - эта галочка всегда снята.
18. Сделаем это программно. Снова выделяем ServiceProcessInstaller, переходим к событиям. Находим там Commited и создаем для него обработчик события.
19. Добавим ссылку using System.Management;
20. Напишем следующий код:
21. Обратите внимание, я пробовал использовать прямой редактор реестра. Этот код закомментирован. Он не работает. Не используйте его. Вместо этого используйте ManagementObjectSearcher как показано выше
22. Собираем решение. F6.
23. Открываем папку с фрамеворком. Копируем оттуда файл InstalUtil.exe в папку с вашей службой.
24. Создаем пустой текстовый файл. Заполняем его следующим текстом:
InstallUtil.exe WindowsService1.exe
25. Сохраняем под именем Install.bat. (Чтобы можно было назначить тип файла, в свойствах папки должна стоять галочка, отображать имена для зарегистрированных типов файлов).
26. Создаем ещё один текстовый файл. Заполняем его следующим текстом:
InstallUtil.exe /U WindowsService1.exe
27. Сохраняем под именем Uninstall.bat.
28. Создаем ещё один текстовый файл. Заполняем его следующим текстом:
net start MyRSS
29. Сохраняем под именем Start.bat.
30. Создаем ещё один текстовый файл. Заполняем его следующим текстом:
net stop MyRSS
31. Сохраняем под именем Stop.bat.
32. Запускаем Install.bat
33. Запускаем Start.bat
34. Через опр.время должна появиться форма:
Однако мои инструкции помогут даже новичкам.
1.Открываем Visual Studio, создаем проект Windows Service.
2. На экране окажется пустой дизайнер. Переключимся в режим кода. Нажмем для этого правой кнопкой мыши и выберем View Code.
3. Окно уже будет содержать два обработчика события: OnStart и OnStop. Первый выполняется при запуске службы, второй при остановке. Также можно использовать другие обработчики событий: при выключении, при изменении статуса питания (для ноутбуков), пауза и восстановление и возможен перехват сессии.
4. В блок USING добавим ссылку на System.Threading.
5. Создадим новую процедуру которая будет выполняться при запуске службы. Назовем её MyProcess.
6. Необходимость в этом объясняется тем, что на каждое действие службы не должно уходить более 30сек даже не самом медленном компьютере. Поэтому я рекомендую в обработчике запуска службы создавать только новый поток и запускать его на выполнение. Все функциональность вкладывать в новый поток.
7. Напишем процедуру, которую будем выполнять в другом потоке. Например: Я хочу чтобы при старте сервис загружал RSS с lenta.ru и отображал его в гриде в окне.
8. Добавляем в службу Windows Form.
9. Кладем на форму DataGridView, устанавливаем свойство Anchor в Top, Bottom, Left, Right.
10. Устанавливаем у компонента DataGridView свойство Modifiers = Public.
11. Переходим в редактор кода службы и пишем следующий код:
12. Дописываем обработчик OnStart()
13. Переходим на дизайнер службы. Добавляем инсталер.
14. Выделяем ServiceProcessInstaller и меняем Account с User на LocalSystem
15. Значния ServiceInstaller ставим как на рисунке
16. Наша служба почти готова. С помощью ServiceProcessInstaller служба будет устанавливаться в систему. После этого она появится с списке служб.
17. Имейте в виду, чтобы служба могла взаимодействовать с пользователем, нужно чтобы была отмечена галочка "Разрешить взаимодействие с рабочим столом". По-умолчанию после установки службы - эта галочка всегда снята.
18. Сделаем это программно. Снова выделяем ServiceProcessInstaller, переходим к событиям. Находим там Commited и создаем для него обработчик события.
19. Добавим ссылку using System.Management;
20. Напишем следующий код:
21. Обратите внимание, я пробовал использовать прямой редактор реестра. Этот код закомментирован. Он не работает. Не используйте его. Вместо этого используйте ManagementObjectSearcher как показано выше
22. Собираем решение. F6.
23. Открываем папку с фрамеворком. Копируем оттуда файл InstalUtil.exe в папку с вашей службой.
24. Создаем пустой текстовый файл. Заполняем его следующим текстом:
InstallUtil.exe WindowsService1.exe
25. Сохраняем под именем Install.bat. (Чтобы можно было назначить тип файла, в свойствах папки должна стоять галочка, отображать имена для зарегистрированных типов файлов).
26. Создаем ещё один текстовый файл. Заполняем его следующим текстом:
InstallUtil.exe /U WindowsService1.exe
27. Сохраняем под именем Uninstall.bat.
28. Создаем ещё один текстовый файл. Заполняем его следующим текстом:
net start MyRSS
29. Сохраняем под именем Start.bat.
30. Создаем ещё один текстовый файл. Заполняем его следующим текстом:
net stop MyRSS
31. Сохраняем под именем Stop.bat.
32. Запускаем Install.bat
33. Запускаем Start.bat
34. Через опр.время должна появиться форма: