.NET コンソール アプリケーションを Windows サービスとして実行する
コンソール アプリケーションを Windows サービスとして利用すると、コードが 1 つのプロジェクトに統合されるため、利点が得られます。これにより、アプリケーションがコンソール アプリケーションとサービスの両方として機能できるようになります。これを実現する一般的なアプローチは次のとおりです。
コード スニペット
using System.ServiceProcess;
public static class Program
{
public const string ServiceName = "MyService";
public class Service : ServiceBase
{
public Service()
{
ServiceName = Program.ServiceName;
}
protected override void OnStart(string[] args) {
Program.Start(args);
}
...
private static void Start(string[] args)
{
// onstart code here
}
private static void Stop()
{
// onstop code here
}
}
ログイン後にコピー
実装
- アプリケーションのエントリ ポイントとして機能する Program という静的クラスを定義します。 .
- Windows を表す、ServiceBase から継承するネストされたクラス Service を作成します。 service.
- Main メソッドで、Environment.UserInteractive を使用して、アプリケーションがコンソール アプリケーションとして実行されているかサービスとして実行されているかを判断します。 True はコンソール モードを示し、false はサービス モードを示します。
- サービスとして実行する場合 (つまり、Environment.UserInteractive が false)、新しい Service インスタンスを作成し、ServiceBase.Run を使用して実行します。
- コンソール モード (つまり、Environment.UserInteractive が true) の場合、キーが押されたときに停止する命令を含むコンソール アプリケーションのコードを実行します。
- サービス固有の操作を処理するための Start や Stop などのメソッドが含まれています。
利点
この手法には次の利点があります。
- コンソールとサービスの両方の機能に対して単一のプロジェクトを維持します。
- メンテナンスを簡素化します。
- コマンドライン引数を使用して、コンソール モードとサービス モードを簡単に切り替えることができます。
以上が.NET コンソール アプリケーションを Windows サービスとして実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。