C# C Windows Phone Mango-无效的跨线程访问?解析XML
我有下面的代码,它似乎抛出了一个无效的跨线程访问。我似乎不明白为什么。我正在从URL加载一个远程xml文件,但是,在解析该xml时,我总是收到此错误。有什么建议吗C# C Windows Phone Mango-无效的跨线程访问?解析XML,c#,xml,windows-phone-7,url,error-handling,C#,Xml,Windows Phone 7,Url,Error Handling,我有下面的代码,它似乎抛出了一个无效的跨线程访问。我似乎不明白为什么。我正在从URL加载一个远程xml文件,但是,在解析该xml时,我总是收到此错误。有什么建议吗 using (StreamReader streamReader = new StreamReader(response.GetResponseStream())) { string xml = streamReader.ReadToEnd(); using (XmlR
using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
{
string xml = streamReader.ReadToEnd();
using (XmlReader reader = XmlReader.Create(new StringReader(xml)))
{
reader.ReadToFollowing("channel");
reader.MoveToFirstAttribute();
reader.ReadToFollowing("title");
output.AppendLine("Title: " + reader.ReadElementContentAsString());
reader.ReadToFollowing("description");
output.AppendLine("Desc: " + reader.ReadElementContentAsString());
textBox1.Text = output.ToString(); //Invalid cross-thread access.
}
}
我试图解析的XML如下所示,我只是在继续学习如何使用c解析不同类型的XML时,尝试解析各个部分:
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"xmlns:dc="http://purl.org /dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0 /modules/slash/">
<channel>
<title>Server & Site News</title>
<description>A place for the Admin and Moderators to post the latest news on both the server and site.</description>
<pubDate>Fri, 18 May 2012 22:45:08 +0000</pubDate>
<lastBuildDate>Fri, 18 May 2012 22:45:08 +0000</lastBuildDate>
<generator>Forums</generator>
<link>http://removedurl.com/forums/server-site-news.23/</link>
<atom:link rel="self" type="application/rss+xml" href="http://removedurl.com/forums/server-site-news.23/index.rss"/>
<item>
<title>Example Title</title>
<pubDate>Mon, 14 May 2012 17:39:45 +0000</pubDate>
<link>http://removedurl.com/threads/back-fully-working.11013/</link>
<guid>http://removedurl.com/threadsback-fully-working.11013/</guid>
<author>Admin</author>
<dc:creator>Admin</dc:creator>
<slash:comments>14</slash:comments>
</item>
</channel>
textBox1.Text=output.ToString//无效的跨线程访问 这是因为在IO线程上执行操作时调用UI线程。尝试在UI线程上分离这些操作或调用 试着把代码改成这样
Dispatcher.BeginInvoke( () => { //your ui update code } );
要从Mayank中添加更多细节,请执行以下操作:
Dispatcher.BeginInvoke( () => {
textBox1.Text = output.ToString()
} );
您必须将对UI对象的调用封送回UI线程。除主线程外,任何其他线程上的UI元素都无法修改。-1您是否尝试用谷歌搜索错误“无效的跨线程访问”?。重复了数十亿个类似的问题我确实看到了许多其他的错误,但是,我需要进一步的澄清,这是Mayank提供的。谢谢,这正是我需要的。