Créer un service Windows

Résolu
Hauwee Messages postés 79 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 29 janvier 2010 - 4 juin 2008 à 16:45
Hauwee Messages postés 79 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 29 janvier 2010 - 26 juin 2008 à 16:55
Bonjour,

Je suis en train de développer un petit service dont la 1ère tâche serait de voir si des fichiers arrivent dans un répertoire.
Faut-il utiliser un timer ou y-a-t-il un autre moyen ?
Merci.





Hauwee

14 réponses

Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
4 juin 2008 à 22:03
Salut,

Et pourquoi pas un FileSystemWatcher? Il est fait pour ça il me semble
1
cs_Megafan Messages postés 389 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 23 septembre 2016 2
4 juin 2008 à 18:16
Salut,
un timer dans un service , c'est pas beau, fait ton test dans un thread et met le en pause quelques secondes.
@+
Megafan
0
Hauwee Messages postés 79 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 29 janvier 2010
4 juin 2008 à 19:24
Je me doutais bien qu'un timer dans un service ce n'était pas top ;)
Aurais-tu un exemple de thread/pause par hasard ?






Hauwee
0
Hauwee Messages postés 79 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 29 janvier 2010
4 juin 2008 à 22:06
Je ne connais pas ce composant. Comme je n'ai pas mon environnement de prog sous la main, je verrai ça demain






Hauwee
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Megafan Messages postés 389 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 23 septembre 2016 2
5 juin 2008 à 09:58
Salut,
Comme le suggére Kevin.Ory, tu peux utliser ce type d'objet, par contre si de temps en temps ton service tombe de manière inexpliquée, fait une vérification plus 'traditionnelle' dans ton répertoire.
@+
Megafan
0
Hauwee Messages postés 79 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 29 janvier 2010
5 juin 2008 à 11:45
Je viens de tester le FileSystemWatcher. C'est impeccable :) Merci


Hauwee
0
Hauwee Messages postés 79 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 29 janvier 2010
9 juin 2008 à 11:04
Petit souci. FileSystemWatcher fonctionne bien si j'accède à des fichiers locaux mais si je veux accéder à des fichiers en réseau, cela ne fonctionne pas :( J'ai essayé en utilisant une adresse UNC qu'un lecteur réseau.

Hauwee
0
cs_Megafan Messages postés 389 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 23 septembre 2016 2
9 juin 2008 à 11:27
Salut,
on en revient à 'faire une surveillance manuelle'....
=thread + verification avec IO.fileexist + Sleep
@+
Megafan
0
Hauwee Messages postés 79 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 29 janvier 2010
9 juin 2008 à 11:31
Pourtant j'ai lu des personnes qui utilisaient ce contrôle pour surveiller des répertoires réseaux donc c'est que ça doit être faisable. C'est pour ça que je ne comprends pas pourquoi avec moi ça ne fonctionne pas :(

Hauwee
0
cs_Megafan Messages postés 389 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 23 septembre 2016 2
9 juin 2008 à 14:08
Salut,
- Tu as essayé en connectant un lecteur reseau ?
- As tu les droits neccessaires sur le répertoire réseau ?
@+
Megafan
0
Hauwee Messages postés 79 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 29 janvier 2010
9 juin 2008 à 14:29
Comme je l'avais indiqué dans mon message, j'ai essayé avec un chemin UNC et un lecteur réseau
J'ai tous les droits, je suis administrateur de mon réseau ;) A moins que ce soit le service même qui n'est pas les droits nécessaires mais comme j'ai essayé avec les 4 modes différents (User/LocalSystem/LocalService/NetworkService), je ne sais plus trop où regarder





Hauwee
0
cs_Megafan Messages postés 389 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 23 septembre 2016 2
9 juin 2008 à 20:42
Salut,


Désolé je vois pas trop, personnelement j'ai déja crée des services sous 2003 avec accès à des fichiers de logs et base de registre pour la configuration. Pas de problémes particuliers.... 


A part envoyer ta source je vois pas comment t'aider...


Désolé


@+


Megafan
0
Hauwee Messages postés 79 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 29 janvier 2010
13 juin 2008 à 15:49
Pour info, j'utilise un FileSystemWatcher "visuel" donc je n'ai rien déclaré dans mon prog.

Voici mon code :

    Sub New()

        ' Cet appel est requis par le Concepteur Windows Form.
        InitializeComponent()

        ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
        ' Là j'indique le répertoire à surveiller
        Me.flwBilan.Path = My.Settings.RepTrav

    End Sub

    Protected Overrides Sub OnStart(ByVal args() As String)
        ' Ajoutez ici le code pour démarrer votre service. Cette méthode doit
        ' démarrer votre service.
      
        Dim strInfos As String = ""
        If My.Settings.ConsignerInformations = True Then            strInfos "Paramètres du service TABEDID : " & Chr(13) & "Répertoire de travail " & My.Settings.RepTrav & Chr(13) & "Répertoire après traitement OK = " & My.Settings.RepBilanOK
        End If
        If My.Settings.UtiliserFiltre = True Then
            Me.flwBilan.Filter = My.Settings.FiltreDetectionFichier            strInfos &Chr(13) & "Filtre " & My.Settings.FiltreDetectionFichier
        Else
            Me.flwBilan.Filter = Nothing            strInfos &Chr(13) & "Filtre Aucun"
        End If
        If My.Settings.ConsignerInformations = True Then
            Me.JournalALC.WriteEntry(strInfos, EventLogEntryType.Information)
        End If
        ' Toutes ces infos sont bien enregistrées dans le journal des évènement

     End Sub

    Private Sub Traiter(ByVal sender As Object, ByVal e As System.IO.FileSystemEventArgs) Handles flwBilan.Changed, flwBilan.Created

        Try
            ' Traitement automatique : découpage
            Dim strBilanGlobal As String = ""
            Dim intNbProd As Int16 = 0
            Dim intNbPages As Int16 = 0
            If My.Settings.ConsignerInformations = True Then
                Me.JournalALC.WriteEntry("Fichier traité : " & e.FullPath, EventLogEntryType.Information)
            End If
....
            ' je ne mets pas le reste du code car en fait ça n'arrive même pas à ce point. Suite à la ligne précédente, une entrée devrait être inscrite dans le journal des évènements et ça ne se fait pas donc j'ai l'impression que la procédure n'est même pas exécutée

    End Sub




Hauwee
0
Hauwee Messages postés 79 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 29 janvier 2010
26 juin 2008 à 16:55
Bonjour,




J'ai mis ce petit programme en stand-by durant quelques jours.


En fait, le service fonctionne bien en réseau si le répertoire cible est sous Windows.


Or, moi je cherche à surveiller un dossier sur un système AIX


Par l'explorateur, je peux faire ce que je veux avec ce dossier (nouveau, modifier, supprimer)


Avec le service, j'arrive bien à voir les fichiers qui sont dans le répertoire mais si j'ajoute un fichier, je renomme ou je supprime, le service de déclenche aucun évènement






Hauwee
0
Rejoignez-nous