我想要的是:
从 AppData 获取要使用的 xml
我编码的内容
StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
StorageFile sampleFile = localFolder.GetFileAsync("abc.xml");
我得到什么
错误:无法将类型“Windows.Foundation.IAsyncOperation”隐式转换为“Windows.Storage.StorageFile”
我检查的内容
当此方法成功完成时,它返回一个存储文件那
代表文件。
来自 MSDN http://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.storage.storagefolder.getfileasync.aspx
我拥有的
Windows 8 发布预览版 64 位;
适用于 Windows 8 的 Visual Studio Express 2012 RC;
C#
我按照MSDN文档编写代码,为什么会发生这个错误以及如何解决它?
拉里给了你正确的解决方案。让我尝试解释一下发生了什么事。
如果您查看 MSDN 文档获取文件异步 http://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.istoragefolder.getfileasync.aspx,您将看到它返回一个 IAsyncOperation。您的代码假定它返回 SampleFile。 GetFileAsync 不提供文件,它提供一个对象,该对象将在检索完成后提供文件。
C# 中的 Await 提供了一个函数,一旦满足完成条件,该函数将由该对象(或代表该对象)调用。然后该函数将值返回给您。 JavaScript 中的 Promise(.then 或 .done)提供类似的功能,但您必须自己提供该函数。
这样做的原因是为了让应用程序能够做出响应。文件访问速度慢。如果访问内存需要 1 秒,那么文件访问将需要大约 15 分钟。异步编程 http://msdn.microsoft.com/en-us/library/windows/apps/hh464924.aspx允许在程序等待时发生其他事情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)