Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 1084097
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 16, 20262026-05-16T22:31:09+00:00 2026-05-16T22:31:09+00:00

I have this piece of code in my Silverlight project: private void button1_Click(object sender,

  • 0

I have this piece of code in my Silverlight project:

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);
    }
}

When I run the code, I get the following exception:

unauthorizedaccessexception
Invalid cross-thread access.

I thought It was a problem with the returned string. But, even if I put this:

MessageBox.Show("foobar");

the same exception rises.
I think that the problem comes from the ReadCallback function that cannot perform such actions.

Can you help me?

Thank you,

Regards

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-16T22:31:10+00:00Added an answer on May 16, 2026 at 10:31 pm

    I think this is because certain parts of Silverlight cannot be invoked by code and instead must originate from user input; I think the MessageBox falls in this category. So unless the MessageBox is called as a result of the user pressing a button or hyperlink, it’s not going to work.

    Note that it doesn’t have to be in the handler for the button or hyperlink click event; anywhere further down the call hierarchy works. What I basically did when I needed to initiate such actions as a result of an async service call, for instance, is I dispalyed a ChildWindow containing a hyperlink saying ‘click here to open your x’ or whatever the user was trying to do (I think I used it to open a server-generated PDF or similar file).

    Also, if the MessageBox can indeed be called without all he malarkey I just wrote about, the Cross-thread access exception can be solved with a call to Dispatcher.Invoke or Dispatcher.BeginInvoke passing a delegate that does the actual action. That’s because asynchronous actions (obviously) take place in a separate thread, but Silverlight, like WPF and like WinForms before them, needs to access its controls from only one thread; invoking using the control’s Dispatcher delegates the actions to the correct thread.

    To use the BeginInvoke solution, try this instead of simply calling MessageBox.Show:

    string resultString = streamReader1.ReadToEnd();
    Dispatcher.Invoke(new Action(() => MessageBox.Show("")));
    

    That’s assuming the code is in a Control code-behind (UserControl, Window, anything), so the Dispatcher property is available. You can use BeginInvoke instead of Invoke if you want to allow the user interface time to properly update itself, but usually the difference is imperceptible.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have found this example on StackOverflow: var people = new List<Person> { new
I have a new web app that is packaged as a WAR as part
This is beyond both making sense and my control. That being said here is
I have a login.jsp page which contains a login form. Once logged in the
I have a script that appends some rows to a table. One of the
I have a snippet to create a 'Like' button for our news site: <iframe
Let say I have the following desire, to simplify the IConvertible's to allow me
I want to have generalised email templates. Currently I have multiple email templates with
We manage a site for a medical charity. They have a number of links
There doesn't seem to be any tried and true set of best practices to

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.