Probléme autocompletion sur textbox,memory is corrupt.

Signaler
-
 Damiens29 -
Bonjour,

J'ai un probléme qui n'apparait pas tous le temps.Lorsque je fais une recherche dans ma textbox via le systéme d'autocompletion, il me met ce message d'erreur

"Attempted to read or write protected memory. This is often an indication that other memory is corrupt".

J'aurais donc aimé savoir d'où cela venait car je n'ai pas trouvé beaucoup de réponse sur internet.

Merci d'avance
A voir également:

18 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
Bonjour,

D'où viennent tes données ?
Comment sont-elles utilisées ?

As-tu un exemple de code ?

Sébastien


Sébastien FERRAND
Expert .net
Microsoft Visual C# MVP 2004 - 2009
Mes données viennent de ma BDD et mise à part, ces problémes de plantage de temps en temps,le code fonctionne bien.

Exemple de code :
AutoCompleteStringCollection collec = new AutoCompleteStringCollection();
            if (t_numdeco.Text != "")
            {
                while (dr.Read())
                {
                    collec.Add(dr["CodeProjet"].ToString());
                }
                t_numdeco.AutoCompleteSource = AutoCompleteSource.CustomSource;
                t_numdeco.AutoCompleteCustomSource = collec;
            }
            else
            {
                t_numdeco.AutoCompleteSource = AutoCompleteSource.None;
                t_numdeco.AutoCompleteCustomSource = null;
            }

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
Ok.

Quand ton datareader est-il ouvert / fermé ?
Est-ce que la source "collec" est vidée ?


Sébastien FERRAND
Ingénieur Concepteur Senior
Microsoft Visual C# MVP 2004 - 2009
Ah oui,j 'ai complétement oublié de vider mon datareader.Je viens de faire mon dr.close() a la fin de mon code et ca a l'air de bien fonctionner.

Je te tiens informés toute à l'heure pour tedire si c etait bien ca qui plantés.
Je te remercie!
J'ai toujours la meme erreur qui se produit sur mon bouton d'ouverture(FT.ShowDialog()) de mon formulaire qui remplit ma textbox d'autocompletion.
private void button1_Click(object sender, EventArgs e)
        {
            F_Test FT = new F_Test();
            FT.ShowDialog(); //Erreur : Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
           }
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
ok.

Normalement, on ne "recycle" pas les commandes et les connexion en .net

en gros :



AutoCompleteStringCollection collec = new AutoCompleteStringCollection();
if (t_numdeco.Text != "")
{
   connection.Open();
   using(var cmd = new SQLCommand("requete", connection)) {
   dr = cmd.ExecuteReader();
      while (dr.Read())
      {
         collec.Add(dr["CodeProjet"].ToString());
      }
      dr.Close();
      dr.Dispose();
   }
   connection.Close();
   t_numdeco.AutoCompleteSource = AutoCompleteSource.CustomSource;
   t_numdeco.AutoCompleteCustomSource = collec;
}
else
{
   t_numdeco.AutoCompleteSource = AutoCompleteSource.None;
   t_numdeco.AutoCompleteCustomSource = null;
}




Sébastien FERRAND
Ingénieur Concepteur Senior
Microsoft Visual C# MVP 2004 - 2009
Blog Photo
Ah ben il boude toujours,ca s'arrange pas.
D'après ce que j'ai lu,ca viendrait du framework mais étant donné que je travail avec le framework 4.0 sous vs 2010,ca me paraitrait un peu louche :

http://forums.asp.net/t/1752178.aspx/1

http://social.msdn.microsoft.com/forums/en-us/vbgeneral/thread/8051DB35-409E-415A-B1B0-F036234F1440

Tu as peut être une autre solution a me proposer ?
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
A quel moment apparaît cette exception ?
A la première exécution ?

As-tu essayé de jouer le code en debug ? pas à pas ? Mettre un point d'arrêt ?




Sébastien FERRAND
Expert .net
Microsoft Visual C# MVP 2004 - 2009
Blog Technique
L'erreur se manifeste quand je sors de ma textbox et cette erreur pointe sur mon showdialog qui ouvre mon formulaire .Il ne récupére pas tous le temps le premier caractére du mot que je recherche lors de mon autocompletion non plus mais il boucle bien.
Il m'affiche cette erreur ci aussi sur mon showdialog().

"Form that is already visible cannot be displayed as a modal dialog box. Set the form's visible property to false before calling showDialog."
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
juste pour savoir :

tu lances le code ci-dessus à chaque fois que tu ajoutes un caractères ?


Sébastien FERRAND
Expert .net
Microsoft Visual C# MVP 2004 - 2009
Blog Technique
Oui,il boucle a chaque fois qu'il recherche un caractére du coup.
Je viens de creer un nouveau projet avec juste une textbox liée a ma BDD et ca fonctionne trés bien donc a mon avis,ca doit être ce showdialog() qui pose probléme mais pourquoi ensuite ??
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
normalement, entre 2 touches, on temporise (500ms) pour éviter de faire 2 requêtes au même moment...



Sébastien FERRAND
Expert .net
Microsoft Visual C# MVP 2004 - 2009
Blog Technique
Ca ne vient pas de là étant donné que c'est lorsque je ne rentre qu'une touche qu'il plante mais c'est bon a savoir !

Tu n'as jamais eu de probléme d'autocompilation auparavant comme ceci ?
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
Jamais eu de souci avec ça...

je pense que tu dois avoir un problème dû au multi thread... en tout cas, évite le ShowDialog(), c'est un nid à problème dans ce type d'utilisation car il stoppe le thread de la fenêtre appelante.


Sébastien FERRAND
Expert .net
Microsoft Visual C# MVP 2004 - 2009
Blog Technique
ok mais comment j'ai possibilité d'afficher mon formulaire sans utiliser la méthode show() ou showdialog()?
Merci en tous cas de ton aide !
En tous les cas,lorsque j'utilise l'executable,mes autocompletion ne provoque pas d'erreur donc c'est l'essential même si c'est vraiment trés chiant sous vs pour tester mon programme.
Bon ,je reviens vers vous parce que j'ai toujours le même probléme.

Et ca ne viens pas du showdialog() du coup car l'erreur se manifeste même sans ...

Quelqu'un aurait-il des idées ?