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

ASP.NET Discussion :

[C#][2.0]Comment détecter lorsqu'un thread s'est terminé ?


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 123
    Points : 50
    Points
    50
    Par défaut [C#][2.0]Comment détecter lorsqu'un thread s'est terminé ?
    Bonjour a tous,

    j'utilise un thread pour effectuer une tache sur une base de donnée. Je clique sur un bouton et je lance alors mon thread.

    Je voulais savoir comment faire pour savoir quand est ce que mon thread se termine. j'aimerais au moment ou il se termine effectuer une action sur un controle....

    voilou...

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 90
    Points
    90
    Par défaut
    Tu peux utiliser les events.

    Enfin ca dépend surtout si tu es synchrone ou asynchrone.

  3. #3
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 123
    Points : 50
    Points
    50
    Par défaut
    Je n'ai pas touché au fait que mon thread soit synchrone ou non. Je pense qu'il est assynchrone mais je n'en suis pas certain.
    Existe t-il un evenement specifique qui s'execute à la fin d'un thread?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 90
    Points
    90
    Par défaut
    Non, l'idée est de créer un event à la création de ton thread et de générer un autre event ou détruire le premier event lorsque le thread se termine.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 66
    Points : 80
    Points
    80
    Par défaut
    Tu pourrais utiliser un BackgroundWorker. Cette classe permet de faire un traitement de façon asynchrone tout en evitant d'avoir a utiliser directement la classe Thread. Ca a l'air pile poile d'être ce que tu veux.
    Il suffit de mettre le travail que tu veux faire dans un handler de l'event DoWork.
    Tu as l'event RunWorkerCompleted qui t'avertis quand le travail est terminé.


    Cette classe te permet aussi d'utiliser une barre de progression et d'annuler le traitement (bien que dans ton cas je doute que tu puisse l'utiliser car tu as l'air de faire un seul gros traitement en un coup).

  6. #6
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 123
    Points : 50
    Points
    50
    Par défaut
    Je ne suis pas en windows form mais en web form. Je n'ai pas acces au event ou alors je ne sais pas comment faire...

    je ne vois pas par ex ton evenement doWork..

  7. #7
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 44
    Points
    44
    Par défaut
    Salut,
    Au taf, on a cherché pas mal de temp à cherché le moyen le plus simple afin de verifier l'achevement d'un traitement asynchrone ... On a pas vraiment trouvé.
    Donc je te décrit rapidement ce qu'on a fini par faire :
    Comme toi, nos traitement asynchrone sont des traitements de DB, donc on a tous simplement rajouté à nos tables (qui concerne les traitements) un champs "statut" qui propose plusieurs valeur (ex: en attente, en cours, terminé, en erreur ...).
    Ensuite un controle en AJAX pool reguliérement la base (le timout differe suivant la durée des traitement) et affiche le statut du traitement. Suivant le statut le controle declanche une fonction javascript qui force le postback de la page. Je te mais le code javacsript au cas ou cela t'interesserai ... :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function BatchCallBack()
        {
            <%= Page.ClientScript.GetPostBackEventReference(Me, "BatchTermine") %>;
        }
    Ensuite, tu n'a plus qu'a faire ce que tu veux sur l'event RaisePostBackEvent coté code behind (N'oublie pas d'implémenter IPostBackEventHandler à ta classe).
    C'est relativement simple a réaliser (c'est de l'AJAX plus que basic car c'est juste du text qui est envoyé)...
    Si cette méthode t'interesses et que tu veux plus d'info n'hésite pas.

    Greg.

Discussions similaires

  1. Comment savoir si un script perl est terminé ?
    Par Krys006 dans le forum Programmation et administration système
    Réponses: 15
    Dernier message: 21/07/2012, 15h21
  2. Comment être informé qu'un process est terminé ?
    Par dus dans le forum Visual C++
    Réponses: 4
    Dernier message: 22/10/2009, 10h57
  3. Réponses: 8
    Dernier message: 24/10/2006, 10h36
  4. Comment détecter si une session Windows est ouverte?
    Par yosthegost dans le forum Delphi
    Réponses: 3
    Dernier message: 23/05/2006, 17h42
  5. Réponses: 3
    Dernier message: 03/01/2006, 18h04

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