This documentation is archived and is not being maintained.

Writing Services Programmatically

Visual Studio .NET 2003

If you choose not to use the Windows Service project template, you can write your own services by setting up the inheritance and other infrastructure elements yourself. When you create a service programmatically, you must perform several steps that the template would otherwise handle for you:

  • You must set up your service class to inherit from the System.ServiceProcess.ServiceBase class.
  • You must create a Main method for your service project that defines the services to run and calls the Run method on them.
  • You must override the OnStart and OnStop procedures and fill in any code you want them to run.
    Note   The Windows Service and Empty Project templates and associated functionality are not available in the Standard Edition of Visual Basic .NET; the Windows Service template and associated functionality is not available in the Standard Edition of Visual C# .NET. For more information, see Visual Basic Standard Edition Features or Visual C# Standard Edition Features.

To write a service programmatically

  1. Create an empty project and create a reference to the necessary namespaces by following these steps:
    1. In Solution Explorer, right-click the References node and click Add Reference.
    2. On the .NET Framework tab, scroll to System.dll and click Select.
    3. Scroll to System.ServiceProcess.dll and click Select.
    4. Click OK.
  2. Add a class and configure it to inherit from System.ServiceProcess.ServiceBase:
    ' Visual Basic
    Public Class UserService1
       Inherits System.ServiceProcess.ServiceBase
    End Class
    // C#
    public class UserService1 : System.ServiceProcess.ServiceBase  
  3. Add the following code to configure your service class:
    ' Visual Basic
    Public Sub New()
        Me.ServiceName = "MyService2"
        Me.CanStop = True
        Me.CanPauseAndContinue = True
        Me.AutoLog = True
    End Sub
    // C#
    public UserService1() 
       this.ServiceName = "MyService2";
       this.CanStop = true;
       this.CanPauseAndContinue = true;
       this.AutoLog = true;
  4. Create a Sub Main for your class, and use it to define the service your class will contain:
    ' Visual Basic
    Shared Sub Main()
       System.ServiceProcess.ServiceBase.Run(New UserService1)
    End Sub
    // C#
    public static void Main() 
       System.ServiceProcess.ServiceBase.Run(new UserService1());

    where userService1 is the name of the class.

  5. Override the OnStart method, and define any processing you want to occur when your service is started.
    ' Visual Basic
    Protected Overrides Sub OnStart(ByVal args() As String)
       ' Insert code here to define processing.
    End Sub
    // C#
    protected override void OnStart(string[] args) 
       // Insert code here to define processing.
  6. Override any other methods you want to define custom processing for, and write code to determine the actions the service should take in each case.
  7. Add the necessary installers for your service application. For more information, see Adding Installers to your Service Application.
  8. Build your project by selecting Build Solution from the Build menu.
    Note   Do not press F5 to run your project — you cannot run a service project in this way.
  9. Create a setup project and the custom actions to install your service. For an example, see Walkthrough: Creating a Windows Service Application in the Component Designer.
  10. Install the service. For more information, see Installing and Uninstalling Services.

See Also

Introduction to Windows Service Applications | Creating Windows Services | Adding Installers to your Service Application | Logging Information About Services   | Walkthrough: Creating a Windows Service Application in the Component Designer | Setup Projects | Walkthrough: Creating a Custom Action