WinRT: загрузка статических данных с помощью GetFileFromApplicationUriAsync ()
У меня есть некоторые данные в моем приложении Windows 8, которые должны быть отправлены, и это просто некоторые статические данные. На самом деле:Это простой XML-файл, который должен быть десериализован.
Данные сохраняются в Assets \ data.xml (Assets - папка по умолчанию из Пустого шаблона приложения) .I '
используя этот фрагмент кода для доступа к нему:
private static async Task Load()
{
if (Windows.ApplicationModel.DesignMode.DesignModeEnabled)
{
return new SampleData();
}
var uri = new Uri("ms-appx:///Assets/data.xml");
Debug.WriteLine("Getting file from Application");
var file = await StorageFile.GetFileFromApplicationUriAsync(uri);
Debug.WriteLine("Opening file for reading async");
var stream = await file.OpenStreamForReadAsync();
var serializer = new XmlSerializer(typeof(MyObject));
Debug.WriteLine("Begin deserialization");
var result = (MyObject)serializer.Deserialize(stream.AsInputStream().AsStreamForRead());
return result;
}
Метод вызова:
public static MyObject GetMyObject()
{
if (_myObject == null)
{
_myObject = Load().Result;
}
return _myObject;
}
"смешной" часть о том, что это:
Если я установил точку останова наvar uri = new Uri(...);
и используйте F11 для пошагового выполнения кода, все работает как положено. Я получаю все строки отладки, и мое приложение показывает статические данные, как и хотел.
Если я неустановить точку останова и неперешагнуть через этот кусок кода, я получаю только выходные данные отладкиGetting a file from Application
и больше ничего не происходит. Кажется, чтоGetFileFromApplicationUriAsync()
никогда не вернется. Я ждал более пяти минут, но ничего не произошло.
У кого-нибудь есть идеи?