Метод Silverlight Asnyc не выполнен - PullRequest
0 голосов
/ 14 июня 2011

Я работаю над сайтом Silverlight, который требует от меня чтения из файла XML.Этот файл находится на стороне сервера.Пользователь не может выбрать один из своих файлов.

Silverlight не может читать файлы в своих собственных папках.Только через OpenFileDialog Silverlight может читать файл, но этот файл загружается пользователем и считается потоком.Как я уже говорил, файл, который мне нужно прочитать, не загружен, но находится на той же карте, что и файл XAP.Вот снимок экрана моего обозревателя решений VS2010:

enter image description here

Итак, как вы видите, файл включен.Обратите внимание: это не предназначено для того, чтобы стать готовым продуктом, я просто работаю над тем, чтобы лучше узнать Silverlight.

Я получил код, который использую в этом блоге: http://blogs.silverlight.net/blogs/msnow/archive/2009/02/10/silverlight-tip-of-the-day-93-reading-xml-with-silverlight.aspx

Я вставил весь класс в страницу для вставки, так как здесь вставить немного (но не слишком, чтобы прочитать его: P): http://pastebin.com/eEMGGxsB

Методпривязанный к DownloadStringCompleted EventHandler никогда не выполняется.Отладчик также не вмешается в это.

Может кто-нибудь сказать мне, что здесь происходит?

1 Ответ

0 голосов
/ 14 июня 2011

Код, который выполняет вызов DownloadStringAsync, выглядит разумным.Всякий раз, когда у вас возникает такая проблема, первым портом захода является Fiddler .Используйте это, чтобы точно определить, какой разговор фактически ведет клиент с сервером.

Одна немедленная ошибка, которую я вижу в коде для завершенного события, заключается в том, что вы обращаетесь к e.Result перед проверкой, имеет ли e.Errorзначение.Доступ к Result, когда Error содержит исключение, вызовет его создание.Следовательно, в вашем коде, если вы не поместили точку останова прямо в верхнюю часть обработчика событий, она никогда не будет достигнута, если возникнут какие-либо проблемы с загрузкой.

Другая проблема с кодом заключается в том, что ваш *Метод 1011 * запускается до завершенного события и, следовательно, будет пытаться получить доступ к еще не заполненному списку кодов.Не забудьте, что это асинхронный код, вы захотите выполнить displaySnippet в конце выполненной процедуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...