C# 如何用外部API响应填充列表框?

C# 如何用外部API响应填充列表框?,c#,windows-phone-7,asynchronous,listbox,httpwebrequest,C#,Windows Phone 7,Asynchronous,Listbox,Httpwebrequest,我向API发出请求,我得到的唯一选项是async get response var r = (HttpWebRequest)WebRequest.Create(url); r.BeginGetResponse(new AsyncCallback(ResponseMethod), state); 因此,我构建了获取数据所需的一切,并且它正在工作。但是数据是在不同的线程中接收的。我的列表框绑定到存在于我的MainViewModel中的StreamItems public ObservableCol

我向API发出请求,我得到的唯一选项是async get response

var r = (HttpWebRequest)WebRequest.Create(url);
r.BeginGetResponse(new AsyncCallback(ResponseMethod), state);
因此,我构建了获取数据所需的一切,并且它正在工作。但是数据是在不同的线程中接收的。我的列表框绑定到存在于我的
MainViewModel
中的
StreamItems

public ObservableCollection<StreamItemViewModel> StreamItems { get; private set; }
我得到:

UnauthorizedAccessException - Invalid cross-thread access.

如何添加从请求中获得的值?

您必须在UI线程上执行此操作-为此,您可以使用:

UnauthorizedAccessException - Invalid cross-thread access.
Dispatcher.BeginInvoke(() =>
{
  StreamItems.Add(new StreamItemViewModel
  {
      Content = responseContent
  });
});