1

我想要什么:
从 AppData 中获取要使用的 xml

我编码的内容

   StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
   StorageFile sampleFile = localFolder.GetFileAsync("abc.xml");

我得到
的错误:无法将类型“Windows.Foundation.IAsyncOperation”隐式转换为“Windows.Storage.StorageFile”

我检查的内容

当此方法成功完成时,它会返回一个表示该文件的StorageFile 。

来自 MSDN

我有什么
Windows 8 Release Preview 64bit;
适用于 Windows 8 的 Visual Studio Express 2012 RC;
C#

我根据 MSDN 文档编写代码,为什么会发生这个错误以及如何解决?

4

2 回答 2

6

拉里给了你正确的解决方案。让我试着解释发生了什么。

如果您查看GetFileAsync的 MSDN 文档,您将看到它返回一个 IAsyncOperation。您的代码假定它返回一个 SampleFile。GetFileAsync 不提供文件,它提供了一个对象,该对象将在检索完成后提供一个文件。

C# 中的 Await 提供了一个函数,一旦满足完成条件,该对象(或代表该对象)将调用该函数。然后该函数将值返回给您。JavaScript 中的 Promise(.then 或 .done)提供了类似的功能,但您必须自己提供该功能。

这样做的原因是应用程序可以响应。文件访问很慢。如果访问内存需要 1 秒,那么文件访问大约需要 15 分钟。 异步编程允许在您的程序等待时发生其他事情。

于 2012-06-16T04:55:41.430 回答
3

StorageFile sampleFile = await localFolder.GetFileAsync("abc.xml")如果您使用 C#,请尝试使用“ ”,localFolder.GetFileAsnc("abc.xml").done(function (sampleFile) {})如果您使用 JS,请尝试使用“”。

于 2012-06-16T04:11:39.880 回答