Heim > Backend-Entwicklung > C++ > Wie kann ich Servicecode direkt in eine .NET-Konsolenanwendung integrieren?

Wie kann ich Servicecode direkt in eine .NET-Konsolenanwendung integrieren?

Patricia Arquette
Freigeben: 2024-12-31 12:30:10
Original
473 Leute haben es durchsucht

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

Servicecode in eine .NET-Konsolenanwendung integrieren

Wie können Sie eine Konsolenanwendung in einen Windows-Dienst umwandeln, ohne ein separates Projekt hinzuzufügen?

Lösung:

Sie können Servicecode nahtlos in Ihre Konsole integrieren Anwendung, damit sie sowohl als Konsolen-App als auch als Dienst ausgeführt werden kann. Betrachten Sie die folgende Technik:

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
    }
}
Nach dem Login kopieren

Erklärung:

  • Die Environment.UserInteractive-Eigenschaft ist normalerweise wahr für Konsolen-Apps und falsch für Dienste.
  • Durch die Überprüfung dieser Eigenschaft bestimmt der Code, ob die Anwendung als Dienst oder als Konsolen-App ausgeführt werden soll. Wenn die Anwendung nicht als Dienst ausgeführt wird, wechselt sie in den Konsolenmodus, liest Eingaben und zeigt Ausgaben an.
  • Der Dienstcode befindet sich in einer verschachtelten Service-Klasse, die von ServiceBase erbt.
  • OnStart und OnStop Methoden werden überschrieben, um das Starten bzw. Stoppen des Dienstes zu handhaben.
  • In Main wird die ServiceBase.Run-Methode verwendet, um den Dienst in einem anderen Thread auszuführen, um dies sicherzustellen Das Programm bleibt reaktionsfähig.
  • Unabhängig davon, ob es als Konsolen-App oder als Dienst ausgeführt wird, bieten die Start- und Stop-Methoden die erforderliche Funktionalität zum Verwalten der Ausführung der Anwendung.

Das obige ist der detaillierte Inhalt vonWie kann ich Servicecode direkt in eine .NET-Konsolenanwendung integrieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage