2010-11-19 4 views
1

Dans un événement KeyDown J'ai:AccessViolationException dans SilverLight KeyDown Gestionnaire

if (e.Key == Key.Delete) 
{ 
    if (HtmlPage.Window.Confirm("r u sure?")) 
    { 
     //Do stuff.... 
    } 
} 

Et je reçois cette erreur « Tentative de lecture ou d'écriture mémoire protégée Ceci est souvent une indication qu'une autre mémoire est corrompue. » @Confirmer?

EDIT: solution de contournement ci-dessous et la ligne, il vomissait l'erreur était .Window.Confirm

Dispatcher.BeginInvoke(() => 
    { 
     if (e.Key == Key.Delete) 
     { 
      if (HtmlPage.Window.Confirm("r u sure?")) 
      { 
       //Do stuff.... 
      } 
     } 
    }); 

Quelqu'un sait une solution rapide.

+2

Pouvez-vous isoler la ligne spécifique qui déclenche cette exception? Est-ce l'une des conditions de 'if()', ou est-ce que c'est dans le '// Do stuff'? –

+0

Je ne reçois aucune erreur, en utilisant votre exemple exact. Quand obtenez-vous l'erreur avant que la case de confirmation apparaisse, après avoir cliqué sur un bouton dans la case de confirmation? Quel navigateur? – Gabe

+1

D'où vient cette solution de contournement? Essayez-vous de faire apparaître une boîte de dialogue de confirmation en dehors du fil de l'interface utilisateur, ou quelque chose? –

Répondre

1

Try this ...

if (e.Key == Key.Delete) 
{ 
    Dispatcher.BeginInvoke(() => 
    { 
     if (HtmlPage.Window.Confirm("r u sure?")) 
     { 
      //Do stuff.... 
     } 
    } 
} 

Jolie bonne explication sur MSDN. Cela fait généralement surface lorsqu'un thread BackgroundWorker est généré et que la tentative d'accès à un UIElement a lieu, comme un bouton, vous obtiendrez également un AccessViolationException à ce stade.

+0

L'OP a déjà posté ceci dans sa question. Echo Echo – Gabe

+0

@gmcalab Note ma réponse @ 18mins, notez le edit @ 16mins qui est quand la référence Dispatcher a fait surface ... pas d'écho ... –

+0

merci pour ce que j'ai compris aussi. Pouvez-vous expliquer brièvement pourquoi devons-nous faire cela? – VoodooChild

Questions connexes