我想要的是什么:
从AppData获取xml以使用
我的代码
StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
StorageFile sampleFile = localFolder.GetFileAsync("abc.xml");
我得到什么
错误:无法将类型'Windows.Foundation.IAsyncOperation'隐式转换为'Windows.Storage.StorageFile'
我检查的内容
当此方法成功完成时,它会返回 StorageFile 代表文件。
我有什么
Windows 8 Release Preview 64bit;
适用于Windows 8的Visual Studio Express 2012 RC;
C#
我根据MSDN文档编写代码,为什么会发生此错误以及如何解决?
答案 0 :(得分:6)
拉里给了你正确的解决方案。让我试着解释发生了什么。
如果查看GetFileAsync的MSDN文档,您会看到它返回IAsyncOperation。您的代码假定它返回SampleFile。 GetFileAsync不提供文件,它提供了一个对象,一旦完成回溯,它将提供一个文件。
Cwait中的Await提供了一个函数,一旦完成条件满足,该对象(或代表该对象)将调用该函数。然后该函数将值返回给您。 JavaScript(.then或.done)中的承诺提供了类似的功能,但您必须自己提供该功能。
这样做的原因是应用程序可以响应。文件访问速度很慢。如果访问内存花了1秒钟,那么文件访问大约需要15分钟。 Asynchronous programming允许在程序等待时发生其他事情。
答案 1 :(得分:3)
如果您使用的是C#或“StorageFile sampleFile = await localFolder.GetFileAsync("abc.xml")
”,请尝试使用“localFolder.GetFileAsnc("abc.xml").done(function (sampleFile) {})
”。