I recently wrote a ping service using a System.Windows.Forms.Timer. Apparently, there is not a message pump for the service, to use the timer from the Forms namespace. I had to use the System.Threading.Timer namespace and pass the delegate to call the method to execute on the timer. This seems to work well. I was using the v 1.1 framework of .NET. I am unsure of the 2.x framework and its ability to handle this issue.