sql >> Databasteknik >  >> RDS >> Sqlserver

Problem med att testa en Windows-tjänst

Du kan alltid skapa en tjänst/konsolapphybrid och använda konsolappen för teständamål.

Vad du behöver göra är något liknande detta - i ditt program.cs , ändra Main metod för att antingen köra tjänsten eller köra som en konsolapp:

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);
        }
    }

och sedan på din serviceklass, som ärver från ServiceBase och har OnStart och OnStop , lägg till RunConsole metod som så:

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

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

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

        OnStop();
    }

Om du nu vill köra appen för att testa dess funktionalitet, starta bara EXE med en -console kommandoradsparameter och lägg en brytpunkt i RunConsole metod.



  1. utlösa om annat

  2. Hur man hanterar GetDate() med Entity Framework

  3. Icke-primära främmande nycklar i Django

  4. Magento sql frågehjälp behövs med massiva frågor