Wie lange dauert der Start eines Windows-Dienstes?

7

Ich habe meinen Windows-Dienst (mit unabhängig installer class und SC.EXE) bereitgestellt, aber ich bekomme einen Fehler, wenn ich versuche, es zu starten:

%Vor%

Was ist die Zeitüberschreitung? Es fühlte sich an wie 3 Sekunden. Was muss ich tun, wenn mein Service länger dauert?

    
Grzenio 21.07.2009, 16:32
quelle

4 Antworten

14

Verwenden Sie in Ihrer Serviceklasse ServiceBase.RequestAdditionalTime() in Ihrer OnStart / OnStop-Methode:

%Vor%     
Ben M 21.07.2009, 16:38
quelle
11

Die normale Methode zum Erstellen eines Dienstes besteht darin, dass der Startcode einen neuen Thread erstellt und den Dienst in diesem Thread ausführt.

Der Service-Start sollte fast augenblicklich sein - nichts weiter als einen neuen Thread mit Ihrer "echten" Arbeit hervorzubringen.

Wenn Sie mehr als drei Sekunden benötigen, ist dies ein Zeichen dafür, dass Sie die eigentliche Arbeit in Ihrem Hauptthread erledigen und keinen eigenen für Ihren Dienst erstellen.

    
Reed Copsey 21.07.2009 16:37
quelle
2

In Bezug auf die spezifische Frage variiert das genaue Timeout, ist aber weniger als 30 Sekunden. Sie können das Standard-Start-Timeout für einen Dienst über einen Registrierungsschlüssel steuern. Sie können hier hier nachsehen.

Allerdings stimme ich vielen anderen zu, dass ich mir zwei mögliche Optionen ansehen würde.

  1. Lassen Sie Ihren Dienst so schnell wie möglich starten, spawnen Sie einen Thread, etc ..
  2. Wenn Sie nicht mit Option eins gehen können, können Sie RequestAdditionalTime () verwenden. Seien Sie sicher, diesen Anruf früh zu machen.
Mitchel Sellers 21.07.2009 16:52
quelle
1

Auch wenn Sie den Dienst in verschiedenen physischen Umgebungen getestet haben und es scheint, dass das Problem nicht die normale Startzeit, sondern die Leistung der PCs ist. Sie können das Zeitlimit für den Registrierungsschlüssel für den bestimmten PC erhöhen.

Siehe: Ссылка

Grüße

    
wacdany 10.10.2011 05:17
quelle

Tags und Links