【发布时间】:2012-01-24 05:09:16
【问题描述】:
在我的Mainpage.xaml.cs 文件中,我有一个函数可以创建另一个类的实例并尝试使用该实例中的 HttpWebRequest 下载网页。问题是,一旦我成功下载了网页,我就无法将其发送回主 UI 线程。我尝试使用Deployment.Current.Dispatcher.BeginInvoke 将网页发送回我等待的 TextBlock,但是当我尝试时收到错误消息,告诉我无法从其他类访问 TextBlock。有什么方法可以在不使用 LocalStorage 的情况下在两个线程之间传递数据?
编辑:代码如下:
主页:
private void button1_Click(object sender, RoutedEventArgs e)
{
Member m = new Member(name, id);
}
会员等级:
public Member(String Member, String API)
{
APIKey = API;
MemberName = Member;
this.super = super;
DoSend(method, string, "", null);
}
public void DoSend(string method, string url, string body, string mimetype)
{
if (WebRequest.RegisterPrefix("https://",System.Net.Browser.WebRequestCreator.ClientHttp)) {
HttpWebRequest request = WebRequest.Create(makeURI(url)) as HttpWebRequest;
request.Method = method;
request.Headers["X-NFSN-Authentication"] = MakeAuthHeader(url,body);
if (body != "")
{
byte[] bodyData = Encoding.UTF8.GetBytes(body);
request.ContentType = mimetype;
//Stuff Should Happen Here
}
else
doStuff(request);
}
public void doStuff(HttpWebRequest httpReq)
{
httpReq.BeginGetResponse(r =>
{
var httpRequest = (HttpWebRequest)r.AsyncState;
var httpResponse = (HttpWebResponse)httpRequest.EndGetResponse(r);
using (var reader = new StreamReader(httpResponse.GetResponseStream()))
{
var response = reader.ReadToEnd();
ResponseBlock.Text = response; //Invalid cross-thread reference
}
}, httpReq);
}
【问题讨论】:
-
请给我们看代码。这样的问题不是很清楚。
-
给我们看一些代码。你遇到了什么错误?是例外吗?
-
我已经用相关代码更新了问题。
标签: silverlight windows-phone-7 httpwebrequest httpwebresponse