有没有办法将 IAsyncOperation 转换为 System.IO.Steam?

Posted

技术标签:

【中文标题】有没有办法将 IAsyncOperation 转换为 System.IO.Steam?【英文标题】:Is there a way to convert an IAsyncOperation to System.IO.Steam? 【发布时间】:2014-11-06 20:27:34 【问题描述】:

我有一个适用于我的 Windows 8 应用程序的 StorageFiles 列表。我需要通过 Stream 类将它们提交到服务器。我试过像这样转换存储文件:

Stream fs = temp[i].OpenAsync(FileAccessMode.Read);

temp[] 是包含图像的 StorageFiles 列表。显然我的代码不起作用。该错误消息表明我可能缺少演员表或其他内容。无论如何将 StorageFiles 或 IAsyncOperation 转换为流?

【问题讨论】:

您收到的错误信息是什么? 你需要await它。 await 对它没有任何作用。这是错误消息:无法将类型“Windows.Foundation.IAsyncOperation”隐式转换为“System.IO.Stream”。存在显式转换(您是否缺少演员表?) 也许它不起作用,因为它在你的 STEAM 中吹掉了太多 System.IO.Steam 【参考方案1】:

检查这是否有效:

Stream fs = (await temp[i].OpenAsync(FileAccessMode.Read)).AsStream();

您的错误消息中包含所有信息 - OpenAsync 返回(在您 await 它之后)IRandomAccessStream,您可以使用 AsStream 方法将其转换为 System.IO.Stream

【讨论】:

以上是关于有没有办法将 IAsyncOperation 转换为 System.IO.Steam?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式将IAsyncOperation强制为错误状态?

我如何以编程方式将IAsyncOperation强制为错误状态?

升级 Visual Studio 产量 - “IAsyncOperation”:未定义基类和未定义 IID_IAsyncOperation

C#Windows窗体应用程序IAsyncOperation

FromBluetoothAddressAsync IAsyncOperation 不包含“GetAwaiter”错误的定义

如何在“native c ++”环境中使用WinRT IAsyncOperation *对象