Если вам нужно приложение, которое запускается при запуске и непрерывной работе Windows, это должна быть служба Windows. Вы не сможете использовать графический интерфейс и Windows в составе одного и того же приложения / проекта, вам нужно будет написать это отдельно и связаться со Службой.
Если вы хотите, чтобы он работал непрерывно и не останавливался, простое приложение Windows Forms не сделает этого: конечно, пользователь может закрыть его. Они также могут закрывать службу, но вы можете настроить (на вкладке «Восстановление») перезапуск, если он «выходит из строя» (уничтожается в диспетчере задач). Они все еще могут остановить службу вручную, но не так легко.
Это шаблон проекта, встроенный в Visual Studio. В зависимости от того, что делает ваше приложение, обычно лучше создать экземпляр объекта Thread
и поместить свою логику в своего рода цикл, который выполняется в новом потоке. Из методов OnStart
и OnStop
самого потока Service
вы можете создать поток или дать ему сигнал об остановке (или просто Abort
это).
Нажав правой кнопкой мыши на сервис в конструкторе, вы можете «Добавить установщик», что означает, что если вы запустите installutil
с именем приложения, сервис будет установлен и, если вы установите правильные свойства на Сервис и установщик, запускаются автоматически.
С точки зрения того, нужен ли вам пользовательский интерфейс - вам нужно было бы придумать какой-то способ пользовательского интерфейса для общения со службой; вы можете использовать именованные каналы, отображаемые в память файлы или использовать WCF (.NET 3.5+) с провайдером именованных каналов / TCP и обращаться прямо к нему.
Для справки:
http://msdn.microsoft.com/en-us/library/aa984464(VS.71).aspx
Надеюсь, это поможет.