4
void GetResponseCallback(IAsyncResult asynchronousResult)
        {

            try
            {
                HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
                HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
                Stream streamResponse = response.GetResponseStream();
                StreamReader streamRead = new StreamReader(streamResponse);
                string responseString = streamRead.ReadToEnd();

                XmlReader xmlDoc = XmlReader.Create(new MemoryStream(System.Text.UTF8Encoding.UTF8.GetBytes(responseString)));

                while (xmlDoc.Read())
                {
                    if (xmlDoc.NodeType == XmlNodeType.Element)
                    {

                        if (xmlDoc.Name.Equals("ResponseCode"))
                        {
                            responseCode = xmlDoc.ReadInnerXml();

                        }

                    }

                }
                if (Convert.ToInt32(responseCode) == 200)
                {

                   MessageBox.Show("Success");
                }


                // Close the stream object
                streamResponse.Close();
                streamRead.Close();
                // Release the HttpWebResponse
                response.Close();


            }
            catch (WebException e)
            {
                // Error treatment
                // ...
            }
        }

上記のコードでMessagebox.showdispalying"Invalid crossthreadaccess"。これを解決する方法を教えてください...

4

2 に答える 2

8
    Dispatcher.BeginInvoke(() =>
            MessageBox.Show("Your message")
    );
于 2012-05-26T16:20:28.643 に答える
6

コードからの UI との対話は、ディスパッチャ スレッドで行う必要があります。HTTP 要求からのコールバックはこのスレッドで実行されないため、エラーが発生します。

次のようなものを使用できるはずです

Deployment.Current.Dispatcher.BeginInvoke(() => MessageBox.SHow("成功") );

メッセージボックスを表示するには

HTH - ルパート。

于 2012-05-25T09:51:41.240 に答える