В настоящее время я работаю над небольшим проектом, который захватывает XML-документ, анализирует его через Linq (выбирает определенные элементы) и затем связывает его со списком через асинхронный httpwebrequest.
Вот код;
void ResponseCallBack(IAsyncResult result)
{
//get to the request object
HttpWebRequest myRequest = result.AsyncState as HttpWebRequest;
try
{
//need error checking
HttpWebResponse response = myRequest.EndGetResponse(result)
as HttpWebResponse;
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
String s = sr.ReadToEnd();
XElement xmlSearch = XElement.Parse(s);
System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() =>
{
lstbBouquets.ItemsSource = from Search in xmlSearch.Descendants("e2service")
select new GetBouquets
{
e2servicename = Search.Element("e2servicename").Value
};
});
//System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() => { Debug.WriteLine(s); });
// Stop progress bar
System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() => { performanceProgressBar.IsIndeterminate = false; });
}
}
catch (WebException webExcp)
{
//Debug only, needs error checking
System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() => { Debug.WriteLine(webExcp.ToString()); });
}
}
Правильно ли я использую диспетчер для общения с потоком пользовательского интерфейса для обновления списка?При выполнении список ничего не получает, и я получаю следующие выходные данные от VS;
Первое случайное исключение типа 'System.MethodAccessException' произошло в mscorlib.dll 'UI Task' (Managed): Loaded 'System.SR.dll «Первое случайное исключение типа« System.IO.FileNotFoundException »произошло в mscorlib.dll System.Windows.Data Ошибка: невозможно получить значение« e2servicename »(тип« System.String ») из« DreamboxRemote.Pages »..GetBouquets '(введите' DreamboxRemote.Pages.GetBouquets ').BindingExpression: Path = 'e2servicename' DataItem = 'DreamboxRemote.Pages.GetBouquets' (HashCode = 98879357);Целевым элементом является 'System.Windows.Controls.TextBlock' (Name = '');Свойство target имеет значение «Text» (тип «System.String»). System.MethodAccessException: попытка доступа к методу не удалась: DreamboxRemote.Pages.GetBouquets.get_e2servicename () в System.Reflection.RuntimeMethodInfo.InternalInvoke (Object obj, invingBlaytrags)., Связыватель, параметры Object [], CultureInfo culture, StackCrawlMark & stackMark) в System.Reflection.RunПервое исключение первого типа «System.MethodAccessException» произошло в mscorlib.dll
Полагаю, янеправильно обрабатывает потоки, но не может видеть где?
РЕДАКТИРОВАТЬ: я должен отметить, что, когда отладочная запись не закомментирована, он выводит полный XML-документ правильно.