IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

comment creer une application c# s executant tout les x temps ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 92
    Par défaut comment creer une application c# s executant tout les x temps ?
    salut,

    J essaie de creer une application C# qui s execute tout les x temps.
    Celle ci est charger tout les x temps de scruter le contenu d un repertoire, pour recuperer les nouveaux fichers.
    ou meme est t il possible de creer une application qui scrute en continue.

    Merci d avance pour votre aide.

    Arioule

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    As tu déjà entendu parlé des timers ?
    C'est ce qu'il te faut.
    Je te laisse chercher sur les tutoriaux et sur des exemples et des explications sur leurs utilisations.

    Sinon tu peux utiliser les taches planifiées de windows pour exécuter par exemple toutes les heures ton programme de surveillance.

  3. #3
    Membre Expert Avatar de LaChips
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 109
    Par défaut
    Bonjour,
    Tu as plusieurs possibilités :
    _ Utiliser un programme qui fait un seul tour (scruter...) et utiliser les tâches planifiées
    _ Tu peux utiliser une méthode avec un timer qui la déclenche toutes les 10mins...
    _ Ou utiliser une boucle "infinie" avec un thread qui se met en pause 10min à la fin du traitement

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Tu as aussi un composant tout prêt pour faire ce que tu veux : le FileSystemWatcher. Il t'informe de ce qui se passe sur un répertoire, création / suppression de fichier etc... Tu peux le configurer (je crois que c'est pas simple à configurer).

  5. #5
    Membre très actif
    Avatar de UNi[FR]
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2002
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juin 2002
    Messages : 340
    Par défaut
    L'idéal serait de créer un service qui utilise un FileSystemWatcher

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    je suis pas sure que FileSystemWatcher fonctionne en mode service.

    Il ne faut pas oublié qu'une grande majorité des "composants" qu'ils soient fenetrés ou pas d'ailleurs ne fonctionnent plus dès lors que l'on travail dans un service.
    En effet, en mode service, il n'y a pas vraiment de thread principal, il n'est donc pas assigné à pomper la file de message windows, car de toute facon il n'y a pas de file de message pour les services. Or la grande majorité de ces composants est fondé sur l'interception des messages en provenances de windows.
    Ainsi System.Windows.Form.Timer utilise un message en provenance de cette file pour savoir qu'il est arrivé à terme et qu'il doit lancer son évenement.
    Pour faire simple on peut dire qu'une grande majorité lance une ressources asynchrones dans le systeme d'exploitation et demande à celui-ci d'envoyer un message indiquant la fin de la tache à l'application. Ca marche c'est sure... mais pas en dehors d'une application.
    (certes réellement c'est plus complexe que cela, mais ca peut se résumer de la sorte)

    Soit il est "joueur" et essaie FileSystemWatcher en mode service... soit il n'est pas "joueur", ou aime pas se prendre pour un apprenti sorcier et fait un thread qui scrute le repertoire toutes les N secondes ou minutes.

  7. #7
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Pour les FileSystemWatcher dans un service : y a pas de blème ! Ca fonctionne sans problème.
    Pour ce qui est de la configuration et l'utilisation des FileSystemWatcher, c'est vrai que ce n'est pas facile. Le mieux est de créer une appli qui log dans un fichier tous les événements avec les données des paramètres. Ainsi il est plus facile de déterminer de quels événements on a besoin et comment les utiliser. Par exemple, lors de création d'un nouveau fichier il y a plusieurs événements qui se déclenchent (Change, Create, ...). La propriété NotifiFilter doit être aussi correctement définie. Moi je l'ai définie comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Watcher.NotifyFilter = NotifyFilters.DirectoryName | NotifyFilters.LastWrite | NotifyFilters.FileName;
    Mais c'est un beau petit job. Bon amusement !!

  8. #8
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Intéressant ce que tu dis cinemania :
    Serais tu en train de dire que faire du multithreading en tant que service windows ce n'est pas gagné ?
    je comptais prochainement lancer plusieurs thread d'une application encapsulé dans un service windows, c'est peut être peine perdu alors ?

Discussions similaires

  1. definition d'une tache qui s'execute toutes les secondes
    Par Mokhtar BEN MESSAOUD dans le forum Administration système
    Réponses: 3
    Dernier message: 07/08/2007, 07h19
  2. Réponses: 8
    Dernier message: 04/01/2007, 10h15
  3. Réponses: 1
    Dernier message: 15/06/2006, 18h28
  4. Comment creer une application dans une dll
    Par Aiekick dans le forum MFC
    Réponses: 2
    Dernier message: 05/03/2006, 14h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo