我在我的 Windows 8 应用程序中有一些数据,这些数据应该是附带的,只是一些静态数据。事实上:这是一个应该反序列化的简单 xml 文件。
数据保存在 Assets\data.xml 中(Assets 是空白应用模板中的默认文件夹)。
我正在使用这段代码来访问它:
private static async Task<MyObject> 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 单步执行代码,一切都会按预期工作。我得到了所有的调试行,我的应用程序根据需要显示了静态数据。
如果我不设置断点并且不跳过这段代码,我只会得到 Debug 输出,Getting a file from Application
而不会发生任何事情。似乎GetFileFromApplicationUriAsync()
再也回不来了。我等了五分钟多,但仍然没有任何反应。
有人知道吗?