Bonjour à tous,
J'ai créé un service windows de déplacement de fichier et créé un installer avec WIX. Tout fonctionne parfaitement excepté l'arrêt du service en cas d'erreur.
Ma gestion des erreurs appelle la procédure suivante:
Mais cela ne fonctionne pas. J'ai bien le message "Le service MoveFiles est stoppé" dans mon fichier de log mais le service ne s'arrête pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 private void StopError() { Library.WriteErrorLog("le Service MoveFiles est stoppé"); using (System.ServiceProcess.ServiceController serviceController = new System.ServiceProcess.ServiceController("MoveQCFiles")) { serviceController.Stop(); //serviceController.WaitForStatus(ServiceControllerStatus.Stopped); } }
Pour info, j'ai testé aussi:
- this.onstop ();
- this.stop();
J'appelle StopError de cette façon par exemple:
Le service s'initialise ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 private void VerifFolder() { NetworkShare.ConnectToShare(@"" + SourcePath, SourceLogin, SourcePassword); if (!Directory.Exists(SourcePath)) { Library.WriteErrorLog("Service Erreur: Le dossier Source " + SourcePath + " n'existe pas"); StopError(); } NetworkShare.DisconnectFromShare(@"" + SourcePath, false); if (!Directory.Exists(DestPath)) { Library.WriteErrorLog("Service Erreur: Le dossier de destination " + DestPath + " n'existe pas"); StopError(); } }
De plus j'ai un second problème qui découlle du premier. J'ai créé un installer qui installe le service en lancement automatique et qui le démarre directement. Du coup si les dossiers correspondant à SourcePath et DestPath n'existe pas, l'installation tourne en boucle et fini pas planter.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public Service1() { this.ServiceName = "MoveQCFiles"; this.CanPauseAndContinue = false; this.CanStop = true; this.CanShutdown = true; InitializeComponent(); } protected override void OnStart(string[] args) { // verification presence fichier config.xml VerifAppConfig(); // ect... }
Comment faire pour créer un installer qui paramètre un demarrage automatique du service mais qui ne le lance pas à l'installation?
Merci pour votre aide
Partager