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 :

Renvoie vers "protected override void Dispose(bool disposing)"


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    stagiaire IT
    Inscrit en
    Août 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : stagiaire IT
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 78
    Points : 50
    Points
    50
    Par défaut Renvoie vers "protected override void Dispose(bool disposing)"
    Bonjour à tous!

    voilà, j'ai effectué une modif dans mon code, et par le plus grand des malheurs, malgré plusieurs tentatives de modification ultérieures, j'obtiens toujours un renvoie vers la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    /// <summary>
            /// Clean up any resources being used.
            /// </summary>
            /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
            protected override void Dispose(bool disposing)
            {
                if (disposing && (components != null))
                {
                    components.Dispose();
                }
                base.Dispose(disposing);
            }
    A quoi sert-elle? pourquoi apparait-elle généralement?

    Voici mon code et l'endroit qui bug (en plus de mon cerveau) :

    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
    16
    17
    18
     
    DataSet oDS;
                // ouvrir la base de données
                DbProviderFactory dbpf = DbProviderFactories.GetFactory("System.Data.OleDb");
                DbConnection oConn = dbpf.CreateConnection();
                oConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=BDD.mdb";
                DbDataAdapter oDA = dbpf.CreateDataAdapter();
                oDA.SelectCommand = oConn.CreateCommand();
                oDA.SelectCommand.CommandText = "SELECT * FROM Couts_liquidité_USD ";
                oDS = new DataSet();
                oDA.Fill(oDS);
     
                //Param_Liquidity = (double)oDS.Tables[0].Rows[0][0];
                int Parametre = int.Parse((Math.Truncate(MaturiteBullet / 12)).ToString())-1;
                double a = double.Parse(oDS.Tables[0].Rows[Parametre][2].ToString()); //<==== ça renvoie à partir d'ici 
                double b = double.Parse(oDS.Tables[0].Rows[Parametre][1].ToString());
     
                oConn.Close();
    Voilà, c'est pas forcément hyper propre, et c'est certainement ça qui provoque l'override, mais je voie pas pourquoi :/

    merci pour vote aide!

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 025
    Points : 5 462
    Points
    5 462
    Par défaut
    Tu peux reformuler parceque je comprends rien!

    C'est quoi le soucis? C'est quoi pour toi "un renvoi"? Une exception?Si oui tu peux indiquer le message?

    Pour l'une des questions c'est l'interface IDispose :
    http://msdn.microsoft.com/fr-fr/libr...e.dispose.aspx

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut
    Dispose sert à libérer les ressources qui ont été assignés.

    c'est d'ailleur l'endroit idéal où vous devriez (entre autre) écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(oConn != null)
       oConn.Dispose();
    Le Dispose que vous montrez est celui de votre Form, il est appellé lorsque la fenetre s'appette à se fermer.
    Quelque chose déclenche la fermeture de votre fenetre, c'est ce que vous devez trouver.

  4. #4
    Membre du Club
    Homme Profil pro
    stagiaire IT
    Inscrit en
    Août 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : stagiaire IT
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 78
    Points : 50
    Points
    50
    Par défaut
    A l'endroit indiqué dans le deuxième bout de code, j'ai un renvoie automatique vers le premier bout de code, ce qui ne "devrait" pas se produire !

  5. #5
    Membre du Club
    Homme Profil pro
    stagiaire IT
    Inscrit en
    Août 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : stagiaire IT
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 78
    Points : 50
    Points
    50
    Par défaut
    C'est exactement ça Giova, mais je ne vois pas ce qui le provoque justement pourtant c'est loin d'être ma première requête de ce type, je suis un peu perdu là

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut
    dur à dire, ca m'est arrivé une fois parcequ'un autre thread jetait une exception.

    Peut etre que c'est votre DbAdapter qui plante....

    D'autant que comme vous dites votre code est un peu cracra

    blindez un peu votre ligne qui pose problème, assurez vous que les champs existe avant de faire un parse.

    Perso je commencerai par là.

  7. #7
    Membre du Club
    Homme Profil pro
    stagiaire IT
    Inscrit en
    Août 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : stagiaire IT
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 78
    Points : 50
    Points
    50
    Par défaut
    d'habitude, dès le remplissage du dataset, j'ai le message d'erreur s'il n'y a pas de champs, et une erreur si le dataset est vide lors de la requête, du coup j'ai vérifié, et la requête SQL est correcte après vérification, je suis vraiment dans la bouillabaisse là, mais je continu de creuser!

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2011
    Messages : 58
    Points : 157
    Points
    157
    Par défaut
    Si c'est une exception tu peux la donnée svp ?

    Sinon en mode débug utilise un espion pour voir si ton oDS est correct, pas de null, données cohérente etc .
    Gspr t'avoir un peu aidé

  9. #9
    Membre du Club
    Homme Profil pro
    stagiaire IT
    Inscrit en
    Août 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : stagiaire IT
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 78
    Points : 50
    Points
    50
    Par défaut
    je n'est pas d'exception c'est ça le pire on dirait qu'il y a une surcharge ou je sais pas, et bim ça l'appelle :/

    je vais regarder un peu plus avec les espions oui

    Edit : je viens de visualiser mon Dataset, il est juste rempli comme il faut, tout va bien! "Parametre" prend bien la bonne valeur, donc à priori "a" devrait être égal à la valeur de la case du dataset selectionné... je ne comprend vraiment pas

  10. #10
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2011
    Messages : 58
    Points : 157
    Points
    157
    Par défaut
    Une petite question.

    C'est normal que tu ne fasse pas de MaConnection.Open() ou connect ?
    ( Ne pas oublier aussi de faire de connection close)

    Après pour l'execution de script SQL il y a d'autre solution genre MonCodeSQL.execute

    Je voudrai bien t'aider plus mais faut que je me remémore ca fait longtemp :p

    Edit: dans l'espion oDS.Tables[0].Rows[Parametre][2].ToString() marche ?

  11. #11
    Membre du Club
    Homme Profil pro
    stagiaire IT
    Inscrit en
    Août 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : stagiaire IT
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 78
    Points : 50
    Points
    50
    Par défaut
    Oui c'est normal, et effectivement je n'oublie pas de la fermer avec le
    Alors non ça ne marche pas, c'est au moment d’exécuter la ligne que ça me renvoie au dispose :/

  12. #12
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2011
    Messages : 58
    Points : 157
    Points
    157
    Par défaut
    Je me suis mal exprimer je veux dire si tu met oDS.Tables[0].Rows[Parametre][2].ToString() a espionner http://imageshack.us/photo/my-images...eveloppez.png/
    cela te donne quoi ?

  13. #13
    Membre du Club
    Homme Profil pro
    stagiaire IT
    Inscrit en
    Août 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : stagiaire IT
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 78
    Points : 50
    Points
    50
    Par défaut
    Après de multiple tests, lorsque je l'espionne, il me donne bien la valeur recherchée ! c'est le drame...

    Edit : j'ai modifié en "int" comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int Parametre_ligne = (int.Parse((Math.Truncate(MaturiteBullet / 12)).ToString())) - 1;
                int a = (int)oDS.Tables[0].Rows[Parametre_ligne][2];
                int b = (int)oDS.Tables[0].Rows[Parametre_ligne][1]; <==== nouveau point d'arrêt
    et le problème est décalé d'une ligne! à n'y rien comprendre! pareil, l'espion donne la bonne valeur! à rendre fou

  14. #14
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2011
    Messages : 58
    Points : 157
    Points
    157
    Par défaut
    Désolé je vois pas la :p Bon courrage

  15. #15
    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,

    Tout d'abord entoures ton code de try/catch.
    Si tu as désactivé l'arrêt sur certains types d'exceptions dans visual studio, on ne peut pas le savoir.
    Ensuite, comme t'as dit micka132, fais des recherches sur IDisposable, parce que l'accès à une base de données utilise des ressources non managées, il est impératif de les nettoyer. Tu as deux solutions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oConn.Close();OConn.Dispose();
    ou ce que je préfère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    using (DbConnection oConn = dbpf.CreateConnection())
    {
    //Ton code
    }
    Si tu fais un "select *", rien ne te garantie que les champs soient dans le même ordre et donc que la ligne suivante ne renvoie pas d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     double a = double.Parse(oDS.Tables[0].Rows[Parametre][2].ToString()); //<==== ça renvoie à partir d'ici 
                double b = double.Parse(oDS.Tables[0].Rows[Parametre][1].ToString());
    Sinon utilises la méthode double.TryParse...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    double a, b;
    if ( double.TryParse(oDS.Tables[0].Rows[Parametre][2].ToString()), out a)
    {
      //ton code
    }
    if ( double.TryParse(oDS.Tables[0].Rows[Parametre][1].ToString()), out b)
    {
      //ton code
    }
    et encore une chose, revoies bien ce code que je trouve incertain!!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oDS.Tables[0].Rows[Parametre][2].ToString()
    Bon dév...
    Un âne se croit savant parce qu'on le charge de livres (proverbe américain)

    N'oubliez pas de avant de
    Pas de question techniques par MP, c'est contre la philosophie du forum

  16. #16
    Membre du Club
    Homme Profil pro
    stagiaire IT
    Inscrit en
    Août 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : stagiaire IT
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 78
    Points : 50
    Points
    50
    Par défaut
    Je vais aller dans ce sens! par contre je n'ai pas désactivé d'arrêt.

    Merci!

Discussions similaires

  1. Réponses: 9
    Dernier message: 16/06/2006, 15h05
  2. Renvoie vers la page d'authentification!!
    Par mamiberkof dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 29/04/2006, 19h30
  3. Validation de formulaire ET renvoi vers autre page
    Par mosquitout dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/11/2005, 10h22
  4. Validation formulaire ET renvoi vers autre page
    Par mosquitout dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 23/11/2005, 20h29

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