2013-09-04 2 views
0

Я пытаюсь создать службу Windows, которая автоматически запускается. Я могу установить и деинсталлировать службу. Если я попытаюсь запустить его, я получаю следующее сообщение об ошибке: «Der Dienst antwortete nicht rechtzeitig auf die Start-oder Steueranfrage». (Я пытаюсь перевести) «Служба не отвечает вовремя при запуске или запросе управления».C# Служба Windows не запускается

Вот мой бедный код

public class LisaServerService: System.ServiceProcess.ServiceBase 
{ 
    private Program lisaServerServiceProgram; 

    public static string LisaServiceName = "LISA-ServerService"; 

    [STAThread] 
    public static void Main(string[] args) 
    { 
     LisaServerService lisaServerService = new LisaServerService(); 

     if (Environment.UserInteractive) 
     { 
      lisaServerService.OnStart(args); 
      Console.WriteLine("I am a service. Normally you can't see the console... just ignore me"); 
      Console.ReadLine(); 
      lisaServerService.OnStop(); 
     } 
     else 
     { 
      ServiceBase.Run(lisaServerService); 
     } 
    } 

    public LisaServerService() 
    { 
     InitializeComponent(); 
    } 

    private void InitializeComponent() 
    { 
     this.CanShutdown = true; 
     this.ServiceName = "LISA - ServerService"; 
     this.CanPauseAndContinue = true; 
     this.lisaServerServiceProgram = new Program(); 
    } 

    protected override void OnStart(string[] args) 
    { 
     lisaServerServiceProgram.Start(null); 
     base.OnStart(args); 
    } 

    protected override void OnStop() 
    { 
     lisaServerServiceProgram.Stop(); 
     base.OnStop(); 
    } 

    protected override void OnShutdown() 
    { 
     OnStop(); 
     base.OnShutdown(); 
    } 
} 

Program.cs

public class Program 
{ 
    public Program() 
    { 
     Logger.LogLevel = LogLevel.Information; 
     Logger.LogRange = LogRange.Write; 
     Logger.Log("Logger initialized"); 
    } 

    public void Start(string[] args) 
    { 
     DatabaseHandler.StartDatabase(); 
     NetworkHandler.StartNetwork(); 
     Logger.Log("Service started"); 
    } 

если я запустить службу как консольная программа, она отлично работает. Таким образом, соединение db + регистратор также работает нормально. (Также в < 10мс)

+0

Как выглядят конструкторы 'Program' и' LisaServerService'? –

+0

Я бы сказал, что ваш метод OnStart никогда не возвращается. Не так ли? – 0wl

+0

Любой намек на просмотр событий? – Sruti

ответ

1

Если вы бегаете службу в интерактивном режиме он ждет консоли здесь:

if (Environment.UserInteractive) 
{ 
    lisaServerService.OnStart(args); 
    Console.WriteLine("I am a service. Normally you can't see the console... just ignore me"); 
    Console.ReadLine(); 
    ... 

Это, скорее всего, предотвращая обслуживание от ответа правильно указать его начала.

+0

Я удалил строки, но тот же результат – user1416994

Смежные вопросы