J'ai ce morceau de code dans mon projet Silverlight:UnauthorizedAccessException pour un "MessageBox" dans SilverLight
private void button1_Click(object sender, RoutedEventArgs e)
{
string baseUri = "http://foo.bar";
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(baseUri));
request.BeginGetResponse(new AsyncCallback(ReadCallback),request);
}
private void ReadCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
using (StreamReader streamReader1 = new StreamReader(response.GetResponseStream()))
{
string resultString = streamReader1.ReadToEnd();
MessageBox.Show(resultString);
}
}
Quand je lance le code, je reçois l'exception suivante:
unauthorizedaccessexception
Invalid cross-thread access.
Je pensais que C'était un problème avec la chaîne retournée. Mais, même si je le mets:
MessageBox.Show("foobar");
la même exception augmente. Je pense que le problème vient de la fonction ReadCallback qui ne peut pas effectuer de telles actions.
Pouvez-vous m'aider?
Merci,
Cordialement
@Alex Paven: Je pense que vous avez manqué la vraie question. Le MessageBox était le rouge-hareng, il a ajouté au problème de cross-thread après. –
Oui, également mis à jour ma réponse immédiatement pour inclure Dispatcher.Invoke, mais je comprends parfaitement que j'ai un style alambiqué et prolixe qui peut déclencher des réactions TLDR. –
+1 pour le dernier paragraphe, 'Dispatcher.BeginInvoke' est ce qui est nécessaire. – AnthonyWJones