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

Windows Forms Discussion :

Timer et application.doevents


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de tenebriox
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 88
    Par défaut Timer et application.doevents
    Bonjour,

    Je rencontre quelques soucis avec l'utilisation d'un timer..
    Mon application effectue un scan qui peut être assez long et pendant lequel l'interface "ne répond pas". Pour que l'aspect visuel (progressbar par exemple) réponde, je veux utiliser la méthode application.doevents(), qui marche bien quand j'en met un peu de partout dans mon code ! Mais j'aimerais faire quelque chose de plus propre, et j'ai pensé à utiliser un timer, qui par exemple, toutes les 100ms lance un application.doevents() Peut-être y'a t'il une meilleure manière de faire ? En tout cas, ça ne fonctionne pas !

    'Lorsque je lance le scan :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            timerdoEvents.Enabled = True
            timerdoEvents.Interval = 100
            timerdoEvents.Start()
    et le code de mon timer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Private Sub timerdoEvents_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timerdoEvents.Tick
            Application.DoEvents()
        End Sub
    Où est mon erreur ? En exécution en pas à pas, il ne rentre jamais dans Private Sub timerdoEvents_Tick, donc n'exécute jamais Application.DoEvents()

  2. #2
    Membre expérimenté Avatar de benito9253
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 205
    Par défaut
    Fais ton scan sur un thread séparé plutot que d'utiliser Application.DoEvent. Tu peux utiliser le BackGroundWorker.

    En ce qui concerne ton problème avec le timer, c'est certainement parce qu'il est déja occupé ailleurs qu'il ne peut pas gérer l'événement tick...

  3. #3
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Où est mon erreur ?
    Ca ne peut pas marcher, parcequ'il faudrait justement que le code fasse des DoEvents() pour pouvoir activer la prise en compte de l'event Timer et rentrer la procédure timerdoEvents_Tick.

    La solution de Benito est la plus propre, mais comme j'ai pas toujours le temps de mettre en place des BackgroundWorkers , j'en reste aux DoEvents() plus simples à gérer.

  4. #4
    Membre confirmé Avatar de tenebriox
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 88
    Par défaut
    Erf, oui effectivement ça parait logique en voyant les choses comme ça ! Merci pour votre rapidité, je vais donc voir du coté de backgroundworker, qui me semble maintenant indispensable à maitriser !
    Merci encore, j'adore la réactivité et la pertinence des personnes de ce forum...

    édit :
    Pour ceux qui ça intéresserait, excellent tuto sur le backgroundworker ici

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Application.DoEvents dans un module de classe
    Par Jean-Philippe André dans le forum VB.NET
    Réponses: 1
    Dernier message: 13/02/2012, 12h59
  2. Avez-vous une solution dans Application.doevent
    Par lahcenlahcen dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/10/2010, 19h58
  3. Application.DoEvents ou pas ?
    Par sarapis dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/11/2009, 13h46
  4. Application.Doevents() ne fonctionne pas
    Par zit_zit dans le forum VB.NET
    Réponses: 4
    Dernier message: 12/02/2008, 15h21
  5. Timer en application console
    Par bubulemaster dans le forum Débuter
    Réponses: 7
    Dernier message: 07/12/2007, 14h22

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