2015-11-13 2 views
1

je reçois cette erreur de temps d'exécutionAccessViolationException au Runtime

exception interne « System.AccessViolationException » ==> "Tentative de lecture ou d'écriture mémoire protégée. Ceci est souvent une indication que d'autres mémoire est corrompue.

et voici mon code

private AutoCompleteStringCollection GetLinqDataSourceForString(string p) 
{ 
    var c = new AutoCompleteStringCollection(); 
    c.Add(Getauto(p)); 
    return c; 
} 


    private void txtSearch_TextChanged(object sender, EventArgs e) 
{ 
    txtSearch.AutoCompleteSource = AutoCompleteSource.CustomSource; 
    txtSearch.AutoCompleteMode = AutoCompleteMode.Suggest; 
     txtSearch.AutoCompleteCustomSource = GetLinqDataSourceForString(txtSearch.Text); 
} 

et celui-ci est dans une autre couche pour obtenir informations à partir des données de base

public string AutoUpdate(string _search) 
{ 
    using (var context = new Phone_BookEntities1()) 
    { 
     var c = (from d in context.Cantacts 
       where d.Cantact1.StartsWith(_search) 
       select d.Cantact1).SingleOrDefault(); 
     return c; 
    } 
} 

et voici où l'erreur de temps d'exécution a eu lieu (dans la dernière ligne)

static class Program 
{ 
    /// <summary> 
    /// The main entry point for the application. 
    /// </summary> 
    [STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Application.Run(new Form1()); 
    } 
} 

et aussi j'utilisé cette méthode sur elle pour entrer seul texte (string)

private void txtSearch_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     if (e.KeyChar < '0' || e.KeyChar > '9') 
      e.Handled = false; 
     else 
      e.Handled = true; 
    } 
+2

La pile d'appel serait utile pour le débogage la cause de cette question; voir http://stackoverflow.com/questions/7901530/c-sharp-error-attempted-to-read-or-write-protected-memory-or-external-compone pour plus d'aide. – dash

+0

@dash Merci pour votre aide –

Répondre

0

vous devriez vous mettre Debugger dans VS2005:

Outils-> options

Debugging-> Général

option décocher « l'optimisation JIT Supprimer la charge du module »