Fondamentalmente, sto ricevendo alcuni dati da un WebService e nel ResponseCallback sto cercando di riempire una ObservableCollection con i risultati ottenuti dalla risposta, ma ottengo un UnauthorizedAccessException
"Accesso cross-thread non valido" quando provo a farlo.Problema di accesso a thread incrociati in ResponseCallback in Windows Phone 7
Quale sarebbe il modo migliore per compilare la raccolta osservabile quando ottengo il risultato?
Grazie!
Questo è il codice:
public ObservableCollection<Person> People { get; set; }
private void ResponseCallback(IAsyncResult asyncResult)
{
HttpWebRequest request = (HttpWebRequest)asyncResult.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asyncResult);
string responseString = string.Empty;
using (Stream content = response.GetResponseStream())
{
if (request != null && response != null)
{
if (response.StatusCode == HttpStatusCode.OK)
{
XDocument document = XDocument.Load(content);
var people = from p in document.Descendants()
where p.Name.LocalName == "PersonInfo"
select Person.GetPersonFromXElement(p);
foreach (Person person in people)
{
this.People.Add(person); // this line throws the exception
}
}
}
content.Close();
}
}
Grazie per il suggerimento, ma non sono molto sicuro di inserire questa soluzione nel codice di produzione. – Carlo
Anche apparentemente la soluzione non funziona in Windows Phone 7. Non ho detto che questo era quello che stavo usando in un primo momento, ma ora l'ho aggiunto al titolo/tag. Grazie. – Carlo
getcha. Non ho esperienza con il telefono 7 .. quindi buona fortuna! – climbage