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 :

Synchronisation de threads


Sujet :

C#

  1. #1
    Invité
    Invité(e)
    Par défaut Synchronisation de threads
    Bonjour,

    Vous pouvez m'aider un peu sur la synchronisation des threads.

    En fait, je veux lancer un traitement dans un thread, et quand ce traitement est terminé, lancer un autre traitement dans ce meme thread.

    Merci

    Un extrait du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    FolderCopy folderCopy = new FolderCopy(this, textBoxEntry.Text, textBoxOut.Text);
                    this.progressBar1.Maximum = folderCopy.nbreRep;
                    Thread thread = new Thread(new ThreadStart(folderCopy.StartTraitement));
                    thread.Start();
    2e partie du traitement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Bordereau bordereau = new Bordereau(textBoxOut.Text + "\\Envoi ok");
                        bordereau.StartTraitement("Livraison_" + DateTime.Now.ToString("u").Replace(' ', 'T').Replace(':', '-'));
                        MessageBox.Show("Traitements terminés", "", MessageBoxButton.OK, MessageBoxImage.Information);

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Points : 502
    Points
    502
    Par défaut
    Dans quelle version de C#/.net développes-tu? Je demande cela parce que dans la dernière version, la gestion des threads a été améliorée (à mon humble avis...).

  3. #3
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Citation Envoyé par Babyneedle Voir le message
    Dans quelle version de C#/.net développes-tu? Je demande cela parce que dans la dernière version, la gestion des threads a été améliorée (à mon humble avis...).
    Comme le dit Babyneedle dans la dernière version les fonctions asynchrones sont présentes (je n'ai pas encore étudié le système mais je pense que cela pourrait peut-être t'aider).

    Il y a aussi le backgroundWorker qui pourrait t'aider je pense et qui permet d'avoir une gestion de thread simplifiée.

    Question : Quand le premier traitement est terminé avec le thread , pourquoi ne pas lancer un autre thread avec un autre traitement (assez simple avec le backgroundWorker) ?

  4. #4
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Bonjour,

    Je ne sais pas vraiment si c'est de ça dont Babyneedle parle, mais là, c'est typiquement le scope de TAP (Task-based Asynchronous Pattern).

    Une petite explication ici.

    Bon dév.

  5. #5
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Citation Envoyé par sisqo60 Voir le message
    Bonjour,

    Je ne sais pas vraiment si c'est de ça dont Babyneedle parle, mais là, c'est typiquement le scope de TAP (Task-based Asynchronous Pattern).

    Une petite explication ici.

    Bon dév.
    Merci pour l'information j'en prend également bonne note

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour, merci de vos reponses

    J'utilise la framework 4 sur VS2010.

    Oui, j'ai deja envisagé d'utiliser un BackGroundWorker mais a mon avis, il est un peu limité fonctionnelement.

    Et concernant le lancement du traitement dans un autre thread, c'est justement la le question vu que je debute avec les threads

  7. #7
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Dans ton cas je pense que le BackgroundWorker pourrait t'aider. dans la fonction exécutée à la fin du traitement, rien ne t'empêche de lancer un deuxième avec le traitement suivant. J'ai utilisé ce système dans une application et cela fonctionne bien

  8. #8
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 2
    Points : 10
    Points
    10
    Par défaut Sinon
    Pourquoi ne pas passer l'objet borderaux en paramètre et lancer l'action depuis le thread.
    Cela ne réponds pas explicitement à la question mais pourquoi sortir d'un thread pour y retourner ?

    Thread thread = new Thread (new ParameterizedThreadStart(myParamObject));

  9. #9
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Citation Envoyé par notnope Voir le message
    Pourquoi ne pas passer l'objet borderaux en paramètre et lancer l'action depuis le thread.
    Cela ne réponds pas explicitement à la question mais pourquoi sortir d'un thread pour y retourner ?

    Thread thread = new Thread (new ParameterizedThreadStart(myParamObject));
    +1 avec notnope, si les 2 traitements doivent être successifs et non simultanés, fais les 2 dans le même thread.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Points : 502
    Points
    502
    Par défaut
    Citation Envoyé par sisqo60 Voir le message
    Bonjour,

    Je ne sais pas vraiment si c'est de ça dont Babyneedle parle, mais là, c'est typiquement le scope de TAP (Task-based Asynchronous Pattern).

    Une petite explication ici.

    Bon dév.
    Oui, c'est de ça que je voulais parler. Par expérience, avant de me lancer dans des explications de features C# 5.0, je demande la version car trop souvent on me dit qu'il faut faire avec une version antérieure.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Merci de vos reponses.
    Pour faire vite, j'ai du integrer la 2e partier dans la classe FolderCopy pour les obliger a se suivre.

    Mais je pense qu'il y a forcement un autre mecanisme de synchronisation de threads qui pourrait ameliorer la reutilisabilité de code.

    Merci a vous.

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

Discussions similaires

  1. question: Synchronisation de threads
    Par remimichot dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 23/07/2006, 18h27
  2. Question sur la synchronisation des threads.
    Par sebastieng dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 07/12/2005, 15h55
  3. Réponses: 1
    Dernier message: 23/05/2005, 15h52
  4. Synchronisation de thread
    Par declencher dans le forum Langage
    Réponses: 2
    Dernier message: 07/01/2004, 10h28

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