views:

335

answers:

3

Hi,

Any links to a good template for a windows service? (looking for C# code)

Something that has the basic funcationlity that I could extend.

+2  A: 

It is a little clear what you are looking for. The Windows Service project type in Visual Studio creates a project with the templates you need to get going with a basic windows service.

You can also look at this article from C# Online. It goes over a few ideas and has a few parts to the article. (Note; the page seems to loads a little slow so be patient)

palehorse
A: 

MSDN has a whitepaper on developing Windows services (local machine background apps without a UI, not a web or Sharepoint service).

Dour High Arch
A: 

I use VS2005 and I like to start with the basic template.

Modify the Service class to this

using System;
using System.ServiceProcess;
using System.Timers;

namespace WindowsService1
{
    public partial class Service1 : ServiceBase
    {
        //better is to read from settings or config file
        private readonly Double _interval = (new TimeSpan(1, 0, 0, 0)).TotalMilliseconds;
        private Timer m_Timer;

        public Service1()
        {
            InitializeComponent();
            Init();
        }

        private void Init()
        {
            m_Timer = new Timer();
            m_Timer.BeginInit();
            m_Timer.AutoReset = false;
            m_Timer.Enabled = true;
            m_Timer.Interval = 1000.0;
            m_Timer.Elapsed += m_Timer_Elapsed;
            m_Timer.EndInit();
        }

        private void m_Timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            //TODO WORK WORK WORK
            RestartTimer();
        }

        private void RestartTimer()
        {
            m_Timer.Interval = _interval;
            m_Timer.Start();
        }

        protected override void OnStart(string[] args)
        {
            base.OnStart(args);
            Start();
        }

        protected override void OnStop()
        {
            Stop();
            base.OnStop();
        }

        public void Start()
        {
            m_Timer.Start();
        }

        public new void Stop()
        {
            m_Timer.Stop();
        }
    }
}

Install using InstallUtil.exe, after you have added an installer : http://msdn.microsoft.com/en-us/library/ddhy0byf(VS.80).aspx

Keep the Init function small and fast, otherwise your service will not start with an error that the service did not respond in a timely fashion

Hope this helps

KeesDijk