Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Problem beim Testen eines Windows-Dienstes

Sie können jederzeit eine Mischung aus Dienst und Konsolen-App erstellen und die Konsolen-App zu Testzwecken verwenden.

Was Sie tun müssen, ist so etwas - in Ihrer program.cs , ändern Sie den Main Methode, um den Dienst entweder auszuführen oder optional als Konsolen-App auszuführen:

static class Program
{
    static void Main(params string[] args)
    {
        string firstArgument = string.Empty;

        if (args.Length > 0)
        {
            firstArgument = args[0].ToLowerInvariant();
        }

        if (string.Compare(firstArgument, "-console", true) == 0)
        {
            new YourServiceClass().RunConsole(args);
        }
        else
        {
            ServiceBase[] ServicesToRun = new ServiceBase[] { new YourServiceClass() };
            ServiceBase.Run(ServicesToRun);
        }
    }

und dann auf Ihre Dienstklasse, die von ServiceBase erbt und hat den OnStart und OnStop , fügen Sie die RunConsole hinzu Methode wie folgt:

    public void RunConsole(string[] args)
    {
        OnStart(args);

        Console.WriteLine("Service running ... press <ENTER> to stop");

        //Console.ReadLine();
        while (true)
        { }

        OnStop();
    }

Wenn Sie nun die App ausführen möchten, um ihre Funktionalität zu testen, starten Sie einfach die EXE mit einer -console Befehlszeilenparameter und setzen Sie einen Haltepunkt in die RunConsole Methode.