static class Program
{
static void Main()
{
var servicesToRun = new ServiceBase[] { new YourService() };
// Run as service
if (!Environment.UserInteractive)
{
ServiceBase.Run(servicesToRun);
}
// Run as console
else
{
Type type = typeof(ServiceBase);
var onStartMethod = type.GetMethod("OnStart", BindingFlags.Instance | BindingFlags.NonPublic);
foreach (var service in servicesToRun)
{
onStartMethod.Invoke(service, new object[] { null });
}
Console.ReadLine();
var onStopMethod = type.GetMethod("OnStop", BindingFlags.Instance | BindingFlags.NonPublic);
foreach (var service in servicesToRun)
{
onStartMethod.Invoke(service, new object[] { null });
}
}
}
}