В моем файле Mainpage.xaml.cs
есть функция, которая создает экземпляр другого класса и пытается загрузить веб-страницу, используя запрос HttpWebRequest из этого экземпляра.Проблема в том, что когда мне удалось загрузить веб-страницу, я не могу отправить ее обратно в основной поток пользовательского интерфейса.Я пытался использовать Deployment.Current.Dispatcher.BeginInvoke
для отправки веб-страницы обратно в ожидающий TextBlock, но при попытке получить сообщение об отсутствии доступа к TextBlock из другого класса.Есть ли способ передачи данных между двумя потоками без использования LocalStorage ?
РЕДАКТИРОВАТЬ : код ниже:
MainPage:
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);
}