Visual Studio Professional Edition以上で作成可能。

プロジェクトテンプレートから新規作成すると3つのソースコードさが作成される

・Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceProcess;
using System.Text;

namespace WindowsService1
{
static class Program
{
/// <summary>
/// アプリケーションのメイン エントリ ポイントです。
/// </summary>
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
}
}
}

・Service1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;

namespace WindowsService1
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}

// サービスの開始&本体

protected override void OnStart(string[] args)
{
}

// サービスの停止

protected override void OnStop()
{
}
}
}

・Service1.Designer.cs

namespace WindowsService1
{
partial class Service1
{
/// <summary>
/// 必要なデザイナー変数です。
/// </summary>
private System.ComponentModel.IContainer components = null;

/// <summary>
/// 使用中のリソースをすべてクリーンアップします。
/// </summary>
/// <param name=”disposing”>マネージ リソースが破棄される場合 true、破棄されない場合は false です。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}

#region コンポーネント デザイナーで生成されたコード

/// <summary>
/// デザイナー サポートに必要なメソッドです。このメソッドの内容を
/// コード エディターで変更しないでください。
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
this.ServiceName = “Service1”;
}

#endregion
}
}

 

サービスの一時停止は OnPause()、その後の再開は OnContinue() が呼び出される。

作成したサービスのシステムへの登録はインストーラーを通じて行う

Visual Studio内の「サーバーエクスプローラー」を使って制御が可能。

 

・「Windows サービス アプリケーションの概要」

http://msdn.microsoft.com/ja-jp/library/d56de412.aspx

 

・「Visual C# で、Windows サービス アプリケーションのセットアップ プロジェクトを作成する方法」

http://support.microsoft.com/kb/816169/ja

 

関連機能は System.ServiceProcess クラスに格納されている。

http://msdn.microsoft.com/ja-jp/library/system.serviceprocess.servicecontroller.aspx