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 :

DateTime + "resident"


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2009
    Messages : 82
    Points : 63
    Points
    63
    Par défaut Timer + "Thread"
    Bonjour à tous..

    je suis pas sur que mon titre convienne mais je sais pas trop comment formulé..

    EDIT : ancien titre : DateTime + "resident"

    voici mon problème, je code des plugins pour meediOS un mediaCenter et voici ma situation..

    il s'agit d'un code permanent cad qu'il est executer en boucle..

    mon objectif et d'enregister le nombre de lecture d'un morceau de musique, ca j'ai réussi, mon autre objectif et d'enregister ce nombre de lecture seulement aprés un délai, par exemple 30s..

    voila ou je bloque et c'est normal ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    maintenant = DateTime.Now;
    if (DateTime.Now.Subtract(maintenant).Seconds > this.WatchedDuration)
    {
    ....
    WatchedDuration vaut 30 pour 30 secondes..

    le hic c'est comment comparé une durée sachant que ma variable maintenant change à chaque fois.. puisque code en boucle ou "resident"

    y a pas une astuce pour dire qu'une fois la variable maintenant = datetime.now elle devient fixe et ne plus plus changée ??

    merci d'avance de votre aide..

    pour info je suis débutant de chez débutant

  2. #2
    Membre éprouvé
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Points : 1 177
    Points
    1 177
    Par défaut
    Tu souhaites attendre 30s si j'ai bien compris ?
    Dans ce cas un petit Thread.Sleep(interval); fera l'affaire.
    S'il faut que le code soit non bloquant, il te suffit de lancer ça dans un autre thread.
    "Si vous voulez être l’esclave des banques et payer pour financer votre propre esclavage, alors laissez les banquiers créer la monnaie" - Josiah Stamp, 1920, Gouverneur de la Banque d’Angleterre
    "Qui ne peut acheter ruine qui voudrait vendre" - Jacques Duboin.
    "Nous n'héritons pas la terre de nos parents, nous l'empruntons à nos enfants." - Antoine de Saint Exupéry

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2009
    Messages : 82
    Points : 63
    Points
    63
    Par défaut
    j'ai essayer plein de trucs et j'arrive à rien de concret..

    j'ai mis tout le code a exécuter au bout de 30 secondes dans un autre thread.

    J'ai fais un petit paint pour expliquer mon probleme



    l'utilisateur tape ENTER, le 2eme thread se lance, pendant que le premier finit très rapidement (peu de code), au bout de 15 secondes l'enregistrement dans la bdd est fait.

    jusque la tout va bien.. ^^

    mon problème est le suivant si l'utilisateur appuie 15 fois d'affilé sur enter, je vais avoir 15 entrées dans ma bdd alors que je devrais avoir que la dernière, puisque les autres frappes n'étaient pas espacées de 15s

    merci d'avance de votre aide.. car je galére bien !!

  4. #4
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Dès que la musique est lancée, tu lances un timer avec un délai de 30 sec.
    Si le timer est déjà lancé ie une musique est déjà en cours, tu le réinitialises.
    Si l'évènement Tick (ou TimeElapsed je sais plus le nom) est lancé tu mets en bdd.
    Si la musique est stopée tu stops ton timer.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2009
    Messages : 82
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par Skyounet Voir le message
    Dès que la musique est lancée, tu lances un timer avec un délai de 30 sec.
    Si le timer est déjà lancé ie une musique est déjà en cours, tu le réinitialises.
    Si l'évènement Tick (ou TimeElapsed je sais plus le nom) est lancé tu mets en bdd.
    Si la musique est stopée tu stops ton timer.

    J'ai enfin réussi avec le Timer, un grand merci !!

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

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