Запланированное консольное приложение против службы Windows? Когда уместно использовать каждый

Для любой запланированной windows-application задачи я обычно рекомендую winservice службу Windows по следующим windows-applications причинам:

  • Служба Windows будет работать, даже если пользователь не вошел в систему на ПК (будет работать, даже если сервер находится в приглашении для входа в систему) (*** Примечание - это может зависеть от версии Windows, которую вы используете) .
  • Служба может работать как учетные записи с высоким уровнем доступа, такие как сетевая служба, локальная система или пользователь - в этом отношении у них больше возможностей настройки.
  • Служба также имеет встроенные параметры для запуска, остановки, перезапуска и приостановки во время работы (иногда).
  • Вы также можете настроить условия сбоя для служб, например, автоматический перезапуск в случае сбоя.

Что касается других windows-application примеров приложений, которые dot-net могут быть службами Windows, во windows-services многих случаях они полезны windows-application для таких приложений, как .net удаленное взаимодействие windows-applications - вы можете запустить службу dotnet удаленного сервера, к которому dot-net подключаются клиенты. Очевидно, очень windows-programming полезно для задач обработки windows-services данных, которые вы также dotnet хотите запускать в фоновом dotnet режиме, или процессов, для winservice которых вы хотите отправить windows электронное письмо при определенных windows условиях и т. Д.

В общем, я windows-service всегда считал запланированные windows-application задачи гораздо более хрупкими windows-application и ненадежными. И если у вас .net нет их в журнале должным dot-net образом, часто бывает труднее winservice отлаживать.

Что касается ошибки .net с таймером - если вы прочитаете windows-service отчет об ошибке на сайте windows-services MS, вы увидите, что она возникает, когда windows-programming вы вызываете «Stop» внутри dotnet события Timer_Elapsed. Ответ windows-application на этот вопрос прост - не .net-framework останавливайтесь. Вместо windows-service этого оберните все это проверкой windows-service на логическое значение IsRunning windows-services и запускайте только в том .net случае, если IsRunning имеет windows-services значение false. Даже если windows с таймером не было проблем, вам dot-net все равно нужно сделать это, потому dotnet что таймер может повторно .net сработать во время вашего windows-programming выполнения, если ваше выполнение dot-net займет больше времени, чем windows-application ваш интервал таймера.

В любом windows-services случае, я по-прежнему считаю windows-programming использование запланированных winservice задач слабым решением, и windows-programming у меня возникают воспоминания dotnet о Windows 95.

.net

windows

windows-services

2022-10-18T17:29:22+00:00
Вопросы с похожей тематикой, как у вопроса:

Запланированное консольное приложение против службы Windows? Когда уместно использовать каждый