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 :

Comment executer un morceau de code en parallèle?


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut Comment executer un morceau de code en parallèle?
    Salut,

    J'ai un objet dont je dois appeler un méthode qui prend du temps. Cette méthode inscrit une ligne de log.
    Je n'ai pas besoin d'attendre le résultat, juste besoin d'appeler la méthode.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void Submit()
    {
        logging.MaMethode(HttpContext.Current.Request, this.Session.SessionID);
    }
    Je suis pas encore super calé sur les thread...
    A votre avis comment faire? J'ai pensé créer un nouveau thread, mais je ne vois pas comment paramétrer le fait que je n'attend pas le résultat.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Thread thread = new Thread(new ThreadStart(Submit));
    thread.Start();
    De plus en lançant ce thread je perd le context.

    Merci d'avance,

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  2. #2
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    Bonjour, tu n'a pas a spécifié que tu attende pas de retour. Car de toute manière ta méthode est en "void" donc ... Sinon le thread s'exécutera une seul fois et se terminera.

    Pour moi c'est bon par contre juste un détails

    la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Thread thread = new Thread(new ThreadStart(Submit));
    Va créer et lancé le thread, donc pas besoin de thread.Start();

    Sinon purement syntaxiquement parlant tu peux aussi faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Thread thread = new Thread(Submit);
    thread.Start();
    Pour dissocié la création de l'exécution.

    Ah oui pour le context faudra peut être le passer en paramètre.

  3. #3
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    si c'est pour du log, pourquoi ne pas utiliser log4net, mise en place sans rien connaitre du tout au bouzin 2 heures à tout casser.

    et super papier de lutecefalco á ce sujet!

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    As tu pris connaissance d'Asynchronous Design Pattern ?

    Voici une description dans la MSDN :
    http://msdn.microsoft.com/fr-fr/libr...dw(VS.80).aspx
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  5. #5
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Merci pour ces retour
    Citation Envoyé par jacky01 Voir le message
    Pour moi c'est bon par contre juste un détails

    la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Thread thread = new Thread(new ThreadStart(Submit));
    Va créer et lancé le thread, donc pas besoin de thread.Start();
    Si je ne fais pas le start je ne passe pas dans la méthode.
    Citation Envoyé par jacky01 Voir le message
    Ah oui pour le context faudra peut être le passer en paramètre.
    J'aimerai bien, mais la syntaxe attend juste un nom de méthode pas de paramètre.
    Citation Envoyé par Arthis Voir le message
    si c'est pour du log, pourquoi ne pas utiliser log4net, mise en place sans rien connaitre du tout au bouzin 2 heures à tout casser.
    En fait, il s'agit de dll d'un logiel qu'on a acheté. La méthode gère et envoi la requete.
    Citation Envoyé par rad_hass Voir le message
    As tu pris connaissance d'Asynchronous Design Pattern ?

    Voici une description dans la MSDN :
    http://msdn.microsoft.com/fr-fr/libr...dw(VS.80).aspx
    Merci j'etais pas tombé sur ce lien. Je vais regarder ça mais j'ai pas l'impression qu'on peut envoyer et "abandonner" une requête. Je ne tiens pas du tout à récupérer le résultat dans la page. Si quelqu'un pouvait confirmer ou infirmer.

    Je vais creuser tout cela un peu plus.

    "Winter is coming" (ma nouvelle page d'accueil)

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 488
    Par défaut
    Moi, en contexte ASP.NET sur des traitements non contraint en temps et avec possibilité de perte raisonnable, je passerais par le pool des threads.
    http://msdn.microsoft.com/en-us/libr...za(VS.80).aspx

    Attention, ce pool est aussi utilisé pour l'exécution des nouvelles requêtes http.

    Le contexte de la requête http n’est pas propagé à travers le threading pool , vous devez utiliser le second paramètre pour stocker les informations nécessaires.

  7. #7
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    Oui tu peux passé un paramètre au thread, il le reçoit en object après à toi de recaster :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int MyParam = 24;
     
    Thread thread = new Thread(Submit);
    thread.Start(MyParam);
     
    private void Submit(object obj)
    {
        int param = (int)obj; // 24 biensure :p
    }

Discussions similaires

  1. Réponses: 15
    Dernier message: 23/11/2011, 11h35
  2. Execution de deux code en parallèle
    Par White212 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/04/2008, 13h44
  3. [edit] Comment exécuter un code dès que l'edit change
    Par LordPeterPan2 dans le forum Interfaces Graphiques
    Réponses: 7
    Dernier message: 31/07/2007, 15h50
  4. Réponses: 3
    Dernier message: 27/01/2006, 15h48
  5. [C#]Comment executer du code qui se trouve dans une string ?
    Par freddyboy dans le forum Windows Forms
    Réponses: 4
    Dernier message: 28/02/2005, 16h31

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