Probléme autocompletion sur textbox,memory is corrupt.

Damiens29 - 31 janv. 2013 à 09:24
 Damiens29 - 6 févr. 2013 à 08:12
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

18 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
31 janv. 2013 à 09:47
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
0
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;
            }

0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
31 janv. 2013 à 09:55
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
0
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!
0

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

Posez votre question
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.
           }
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
31 janv. 2013 à 11:12
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
0
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 ?
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
31 janv. 2013 à 13:26
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
0
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.
0
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."
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
31 janv. 2013 à 14:04
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
0
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 ??
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
31 janv. 2013 à 15:31
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
0
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 ?
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
31 janv. 2013 à 16:41
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
0
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 !
0
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.
0
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 ?
0
Rejoignez-nous