Créer un service Windows [Résolu]

Hauwee 80 Messages postés vendredi 8 décembre 2006Date d'inscription 29 janvier 2010 Dernière intervention - 4 juin 2008 à 16:45 - Dernière réponse : Hauwee 80 Messages postés vendredi 8 décembre 2006Date d'inscription 29 janvier 2010 Dernière intervention
- 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
Afficher la suite 

14 réponses

Répondre au sujet
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 4 juin 2008 à 22:03
+3
Utile
Salut,

Et pourquoi pas un FileSystemWatcher? Il est fait pour ça il me semble
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Kevin.Ory
cs_Megafan 390 Messages postés dimanche 7 avril 2002Date d'inscription 23 septembre 2016 Dernière intervention - 4 juin 2008 à 18:16
0
Utile
Salut,
un timer dans un service , c'est pas beau, fait ton test dans un thread et met le en pause quelques secondes.
@+
Megafan
Commenter la réponse de cs_Megafan
Hauwee 80 Messages postés vendredi 8 décembre 2006Date d'inscription 29 janvier 2010 Dernière intervention - 4 juin 2008 à 19:24
0
Utile
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
Commenter la réponse de Hauwee
Hauwee 80 Messages postés vendredi 8 décembre 2006Date d'inscription 29 janvier 2010 Dernière intervention - 4 juin 2008 à 22:06
0
Utile
Je ne connais pas ce composant. Comme je n'ai pas mon environnement de prog sous la main, je verrai ça demain






Hauwee
Commenter la réponse de Hauwee
cs_Megafan 390 Messages postés dimanche 7 avril 2002Date d'inscription 23 septembre 2016 Dernière intervention - 5 juin 2008 à 09:58
0
Utile
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
Commenter la réponse de cs_Megafan
Hauwee 80 Messages postés vendredi 8 décembre 2006Date d'inscription 29 janvier 2010 Dernière intervention - 5 juin 2008 à 11:45
0
Utile
Je viens de tester le FileSystemWatcher. C'est impeccable :) Merci


Hauwee
Commenter la réponse de Hauwee
Hauwee 80 Messages postés vendredi 8 décembre 2006Date d'inscription 29 janvier 2010 Dernière intervention - 9 juin 2008 à 11:04
0
Utile
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
Commenter la réponse de Hauwee
cs_Megafan 390 Messages postés dimanche 7 avril 2002Date d'inscription 23 septembre 2016 Dernière intervention - 9 juin 2008 à 11:27
0
Utile
Salut,
on en revient à 'faire une surveillance manuelle'....
=thread + verification avec IO.fileexist + Sleep
@+
Megafan
Commenter la réponse de cs_Megafan
Hauwee 80 Messages postés vendredi 8 décembre 2006Date d'inscription 29 janvier 2010 Dernière intervention - 9 juin 2008 à 11:31
0
Utile
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
Commenter la réponse de Hauwee
cs_Megafan 390 Messages postés dimanche 7 avril 2002Date d'inscription 23 septembre 2016 Dernière intervention - 9 juin 2008 à 14:08
0
Utile
Salut,
- Tu as essayé en connectant un lecteur reseau ?
- As tu les droits neccessaires sur le répertoire réseau ?
@+
Megafan
Commenter la réponse de cs_Megafan
Hauwee 80 Messages postés vendredi 8 décembre 2006Date d'inscription 29 janvier 2010 Dernière intervention - 9 juin 2008 à 14:29
0
Utile
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
Commenter la réponse de Hauwee
cs_Megafan 390 Messages postés dimanche 7 avril 2002Date d'inscription 23 septembre 2016 Dernière intervention - 9 juin 2008 à 20:42
0
Utile
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
Commenter la réponse de cs_Megafan
Hauwee 80 Messages postés vendredi 8 décembre 2006Date d'inscription 29 janvier 2010 Dernière intervention - 13 juin 2008 à 15:49
0
Utile
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
Commenter la réponse de Hauwee
Hauwee 80 Messages postés vendredi 8 décembre 2006Date d'inscription 29 janvier 2010 Dernière intervention - 26 juin 2008 à 16:55
0
Utile
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
Commenter la réponse de Hauwee

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.