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 :

Exécution de méthodes "en bloc"


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de TheCaribouX
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 255
    Par défaut Exécution de méthodes "en bloc"
    Bonjour,

    je pose la question à tout hasard...

    j'ai une méthode qui elle même fait appel à deux autre méthode:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void remove(){
    removeA();
    removeB()
    }
    j'aimerais tout d'abord que removeB ne s'execute pas si removeA a généré une exception, donc j'utilise try{...} catch{} et ca fonctionne, seulement j'aimerais aussi que removeA ne s'execute pas si removeB genere une exception...

    est-ce faisable?

    en espérant que quelqu'un a compris quelque chose à mon charabia...

  2. #2
    Membre Expert Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Par défaut
    Je vois ce que tu veux dire mais je ne vois pas dans quel cadre tu veux l'appliquer...

    tu peux regarder pour implémenter deux fonction qui font le travail inverse (qui annulent les opérations de A et B).. donc tu fais si une des 2 fonctions plante, tu exécute les fonctions qui annulent leur traitement.

    j'espère que tu vois ce que je veux dire...

  3. #3
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Ca a tout l'air d'être une transaction que tu cherches à faire.

    En gros tu veux revenir à l'état initial si jamais il y a un problème ?

  4. #4
    Membre très actif Avatar de TheCaribouX
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 255
    Par défaut
    oui en fait c'est tout bête mais je me dis que ca doit etre un probleme récurrent.

    je vais le faire en version courte

    j'ai deux classes, chacune de ces classes a une liste d'objets qui se remplit "en parallele" (je sais ca parait fumeux mais j'y avais trouvé une utilité lors de l'implémentation alors je prefere pas trop y toucher). Donc, quand j'ajoute un element dans la liste de A j'avertis B pour qu'il l'ajoute aussi un élément correspondant. Pour l'élimination, B dis à A d'éliminer un élément puis elimine le sien.

    C'est jsute qu'en relisant mon code je me suis dit que la situation pouvait arriver ou B dit a A d'eliminer son element, celui ci le fait, B essaie de l'éliminer mais pour une obscure raison une exception est levée... ca générerait un désequilibre...

  5. #5
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut
    sur la base de la reflexion de guuhl ( ca deviens une habitude )
    un truc dans le genre alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    remove()
    {
       var sA = SaveA();
       var sB = SaveB();
       try
       {
          removeA();
          removeB();
       }
       catch 
       {
         RestoreA(sA);
         RestoreB(sB);
       }
    }

  6. #6
    Membre très actif Avatar de TheCaribouX
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 255
    Par défaut
    Salut ZaaN

    merci pour la solution qui répond pas mal à ma question

    je me demande juste si ca risque pas d'executer restoreB meme si removeB n'a pas été executé (dans le cas ou removeA lance une exception)

    (je suppose quand meme que si les méthodes sont bien construites y'a pas trop de risque)

    Merci pour vos réponses!

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

Discussions similaires

  1. [C#] Exécuter une méthode apsx.cs depuis un ascx
    Par bendj dans le forum ASP.NET
    Réponses: 12
    Dernier message: 12/07/2005, 11h18
  2. [Reflection] Exécuter une méthode donnée d'une classe
    Par schousso dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 03/06/2004, 10h35

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