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 :

Detecter le lag


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2013
    Messages : 57
    Points : 44
    Points
    44
    Par défaut Detecter le lag
    Bonjour

    Alors voila, j'ai un formulaire avec un timer actif
    a chaque fois que le timer déclenche son événement .Tick (toutes les demi secondes), des calculs sont exécutés

    cependant en fonction des instants, les calculs sont plus ou moins importants et il arrive que, sur certains ordinateurs, cela provoque des lags, c'est a dire dans mon cas que l’événement Tick ne se produit plus toutes les demi secondes mais un peu plus. Je cherche un moyen de détecter cela pour réduire a ce moment les calculs exécutés, j'ai d’ailleurs une procédure toute faite pour ça

    Je voulais donc vous demander comment puis-je savoir quand est-ce que ça lag et que je doit lancer ma procédure. (Et même si possible déterminer la quantité de lag)

    Merci d'avance, bonne journée.

  2. #2
    Expert éminent 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
    Points : 7 903
    Points
    7 903
    Par défaut
    As-tu bien désactivé le Timer pendant l'exécution de l'event ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    private void timer1_Tick(object sender, EventArgs e)
    {
       timer1.Enabled = false ;
       // ... le traitement ici
       timer1.Enabled = true ;
    }
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2013
    Messages : 57
    Points : 44
    Points
    44
    Par défaut
    Pourquoi ? Je voudrais bien essayer de faire ça mais cela ne vas pas m'aider (même sans, sur mon pc cela ne lag jamais, mais sur d'autres si, mais je n'aurais pas accès a d'autres ordinateurs que le mien avant la semaine prochaine)
    Mon problème n'est pas que ça lag, puis-qu’étant donné la quantité de calculs effectués, il arrivera forcement a un moment ou ça vas lagger (c'est fait express, il y en a de plus en plus). Moi je voudrais détecter dès que les calculs font lagger pour les réduire pour rester pile a la limite [Lag]/[Pas lag].

  4. #4
    Expert éminent 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
    Points : 7 903
    Points
    7 903
    Par défaut
    En réglant la nombre de traitement en fonction d'un temps de traitement calculé un peu comme une moyenne glissante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    TimeSpan AverageDelay= new TimeSpan(300*10000) ; // Temps d'exécution par défaut (300 millisecondes), 10000 = nb de tick (100 ns) par ms
    
    private void timer1_Tick(object sender, EventArgs e)
    {
       timer1.Enabled = false ;
       DateTime StartTime = DateTime.Now ;
       // ... le traitement ici
       TimeSpan Delay = DateTime.Now - StartTime ;
       AverageDelay = new TimeSpan((AverageDelay/10)*9+Delay) ;
       // ... Régler la quantité de traitement à effectuer dans le prochain tick en fonction de AverageDelay
       timer1.Enabled = true ;
    }
    [Edit] correction sur le calcul de AverageDelay:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       AverageDelay = new TimeSpan((AverageDelay.Ticks/10)*9+Delay.Ticks) ;
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  5. #5
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2013
    Messages : 57
    Points : 44
    Points
    44
    Par défaut
    Merci beaucoup

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

Discussions similaires

  1. Detection des touches enfoncées par API
    Par Ingham dans le forum VB 6 et antérieur
    Réponses: 31
    Dernier message: 20/02/2006, 12h30
  2. Virus detecté au demarrage
    Par Nasky dans le forum Sécurité
    Réponses: 7
    Dernier message: 26/11/2002, 23h07
  3. [VB6] [Lecteur] Détection de disquette
    Par oazar dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 31/10/2002, 12h37
  4. detection de lignes
    Par the.cable.guy dans le forum Algorithmes et structures de données
    Réponses: 29
    Dernier message: 10/10/2002, 11h15
  5. Detection arret de windows
    Par philippe30 dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 21/09/2002, 18h41

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