Problème de destruction d'objet

Résolu
SatanicPunker Messages postés 19 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 18 février 2008 - 9 mai 2007 à 17:17
SatanicPunker Messages postés 19 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 18 février 2008 - 10 mai 2007 à 12:42
Bonjour,

Je suis en plein codage d'une application de reconnaissance vocale et je bloque sur un truc:

Voila, J'ai un bouton qui permet d'activer la reconnaissance vocale, et il faut réappuyer sur ce bouton pour arrêter la reconnaissance vocale.

Voila le code :

 if (button2.Text == "Enable speak")
            {
                gr = new Grammar(textBox1, this);
                textBox1.Enabled = true;
                button2.Text = "Stop";
                         
               
            }

            else if (button2.Text == "Stop") {

                gr = null;               
                button2.Text = "Enable speak";
                textBox1.Enabled = false;
              
               
            }

Le problème est l'objet "Grammar", je le crée au moment du clique sur le bouton enable speak,  et lorsqu'il stoppe, je le remet à Null.
Mais il continue à tourner même à null et je ne comprend pas vraiment pourquoi.

C'est une application de Speech-to-text, et c'est bien dommage que même à Stop, il réussisse à changer les mots dans la TextBox.

Si quelqu'un peut m'aider, c'est cool.

Merci

7 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
10 mai 2007 à 11:46
Si c'est un objet à toi alors oui tu dois implementer l'interface Dispose.
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
9 mai 2007 à 18:31
Salut, "gr = null;" ça donne rien car les destructeurs en C# ne sont pas déterministes, c-à-d que l'objet sera supprimé de la mémoire quand le GC passera par là.. Soit ton objet possède une méthode Dispose, une fonction Close ou quelque chose comme ça.. Soit c'est un objet COM et tu peux liberer avec Marshal.ReleaseComObject.
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
9 mai 2007 à 22:26
Nullable n'est il pas possible dans ce cas la ?

Shell
0
SatanicPunker Messages postés 19 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 18 février 2008
9 mai 2007 à 23:48
Bonsoir,

J'essayerai demain vos idées et je vous donnerai des nouvelles.

Merci beaucoup.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
10 mai 2007 à 08:13
Pour DeAtHCrAsH,

Nullable signifie qu'un objet de type valeur (comme un entier, ou un DateTime) pourra recevoir une valeur null.

Amicalement, SharpMao
0
SatanicPunker Messages postés 19 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 18 février 2008
10 mai 2007 à 11:15
Bonjour, le Problème, c'est que ce n'est pas un objet COM, c'est une classe que j'ai conçue moi-même.
Donc le Marshal.realeaseComObject ne marche pas.
Est-ce que je dois opter pour une méthode dispose ou destroy pour en finir avec lui?
0
SatanicPunker Messages postés 19 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 18 février 2008
10 mai 2007 à 12:42
Ouais je me disait bien, je vais faire ça .








Merci bien.
0
Rejoignez-nous