2016-10-21 5 views
0

Ich habe meinen ersten .Net-Dienst mit TopShelf geschrieben und ich habe ein Problem, bei dem der Dienstcode nur einmal ausgeführt wird.Windows-Dienst wird nur einmal ausgeführt

Ich habe den Service Haupt konfiguriert als

private static void Main(string[] args) 
    { 
     HostFactory.Run(x => 
     { 
      x.Service<ServiceProcess>(s => 
      { 
       s.ConstructUsing(name => new ServiceProcess()); 
       s.WhenStarted(tc => tc.Start()); 
       s.WhenStopped(tc => tc.Stop()); 
      }); 

      x.StartAutomatically(); 
      x.RunAs(Username, Password); 
     }); 
    } 

folgt, und das Verfahren, die nur ein einziges Mal ausgeführt wird ist wie folgt.

Ich kann im Ereignisprotokoll sehen, dass die Nachricht korrekt geschrieben wird, aber es tritt nur ein einziges Mal auf. Da dies die grundlegendste Konfiguration ist, bin ich mir nicht sicher, warum das nicht funktioniert. Ich habe mit dem Timing gespielt und versucht, die Ausnahmebehandlung hinzuzufügen, aber letztendlich scheint es einfach nicht mehr zu funktionieren.

Beachten Sie, dass meine Start() und Stop() Methoden jeweils eine und _timer.Stop() machen.

Antwort

2

Setzen Sie die AutoReset-Eigenschaft Ihres Timers auf "True".

+0

Zu meiner Verteidigung erhielt ich schlechte Informationen von einem Mitarbeiter. ;) Gerne gebe ich dir die einfachen Punkte. – McArthey

+0

Ich wollte diesen Link für jeden zur Verfügung stellen. Dies ist nicht spezifisch für TopShelf, sondern eine Serviceeigenschaft: https://msdn.microsoft.com/en-us/library/system.timers.timer.autoreset(v=vs.110).aspx – McArthey

Verwandte Themen