Оговорюсь, разработкой десктопных приложений под windows знаком слабо, но требуется реализовать....
Нужно чтобы часть приложения работала всегда в фоне без gui. Как я понимаю основной вариант - это создание службы, но судя по диспетчеру в котором куча запущенных процессов, не все используют службы. Какие еще есть способы, и вообще что предпочтительней?
Можно просто написать приложение, не создавая ни формы, ни окна с консолью. Будет "невидимым".
Вместо Application.Run(new Form1()); напишите Application.Run();. Или вообще не пишите.
Но если ваше приложение по смыслу должно быть службой, то думаю лучше и делать его как службу.
А что это за тип приложения, он имеется в готовых шаблонах visual studio?
"Но если ваше приложение по смыслу должно быть службой, то думаю лучше и делать его как службу."
Это как по смыслу? В принципе под этот смысл наверное подпадает любое действие, которое выполняется в фоне. Или в службы windows закладывается, какой-то другой смысл?
Вообще сам на службу и посматриваю, но думаю может есть более простое решение.
А что это за тип приложения, он имеется в готовых шаблонах visual studio?
Да обычное оконное приложение можете создать, а в файле Program.cs убрать вызов Application.Run(new Form1()); Вместо него можете свой код написать.
Если вам нужна программа, которая запускается автоматически при старте системы и в процессе свой работы не требует прямого взаимодействия с пользователем, выполняя что-то в фоне - делайте лучше службу, они для этого и придуманы.
У служб есть ряд ограничений, поэтому для некоторых задач они не подходят. Если у вас именно такой случай, то можно просто скрыть форму и убрать приложения из таскбара. Можно добавить иконку в в трей, чтобы приложение хоть какие-то признаки жизни подавало, но это уже по желанию.
Для примера нет доступа к классам из System.Printing, нельзя взаимодействовать с рабочим столом (например рисовать на нем), нельзя запускать приложения из службы, и другие ограничения, связанные с тем, что служба не пользовательский процесс, а системный.