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.