ホームページ > バックエンド開発 > C++ > サービス コードを .NET コンソール アプリケーションに直接統合するにはどうすればよいですか?

サービス コードを .NET コンソール アプリケーションに直接統合するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-31 12:30:10
オリジナル
464 人が閲覧しました

How Can I Integrate Service Code Directly into a .NET Console Application?

サービス コードを .NET コンソール アプリケーションに統合する

別のプロジェクトを追加せずに、コンソール アプリケーションを Windows サービスに変換するにはどうすればよいですか?

解決策:

次のことができます。サービス コードをコンソール アプリケーションにシームレスに統合して、コンソール アプリケーションとサービスの両方として実行できるようにします。次の手法を考えてみましょう:

using System.ServiceProcess;

public static class Program
{
    const string ServiceName = "MyService";

    public class Service : ServiceBase
    {
        public Service()
        {
            ServiceName = Program.ServiceName;
        }

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

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

    static void Main(string[] args)
    {
        if (!Environment.UserInteractive)
        {
            // Running as service
            using (var service = new Service())
                ServiceBase.Run(service);
        }
        else
        {
            // Running as console app
            Start(args);
            Console.WriteLine("Press any key to stop...");
            Console.ReadKey(true);
            Stop();
        }
    }

    private static void Start(string[] args)
    {
        // OnStart code here
    }

    private static void Stop()
    {
        // OnStop code here
    }
}
ログイン後にコピー

説明:

  • Environment.UserInteractive プロパティは通常、コンソール アプリの場合は true、サービスの場合は false です。
  • このプロパティをチェックすることにより、コードはアプリケーションをサービスとして実行するかコンソール アプリとして実行するかを決定します。サービスとして実行されていない場合、アプリケーションはコンソール モードに入り、入力を読み取って出力を表示します。
  • サービス コードは、ServiceBase から継承するネストされた Service クラスに存在します。
  • OnStart と OnStopメソッドは、それぞれサービスの開始と停止を処理するためにオーバーライドされます。
  • Main では、ServiceBase.Run メソッドを使用してサービス内でサービスを実行します。
  • コンソール アプリとして実行するかサービスとして実行するかに関係なく、Start メソッドと Stop メソッドはアプリケーションの実行を管理するために必要な機能を提供します。

以上がサービス コードを .NET コンソール アプリケーションに直接統合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート