如何使用 IAsyncOperation 接口通过 WinRT 进行自己的异步操作?
我正在开发一个地铁应用程序,我想创建一些异步操作,我自己的类将实现这些操作。
我只找到了使用 WinRT 操作的异步示例(例如 CreateFileAsync)。我没有找到任何有人创建异步方法并使用它的实例。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
现在你可以做到了。看看这个:
http://blogs.msdn.com/b/nativeconcurrency/archive/2011/10/27/try-it-now-use-ppl-to- Produce-windows-8-asynchronous-operations。 aspx
http://code.msdn.microsoft.com/Windows-8-Asynchronous-08009a0d
使用 C++ 的 WinRT 异步生产
Now you can do it. Look at this:
http://blogs.msdn.com/b/nativeconcurrency/archive/2011/10/27/try-it-now-use-ppl-to-produce-windows-8-asynchronous-operations.aspx
http://code.msdn.microsoft.com/Windows-8-Asynchronous-08009a0d
WinRT Async Production using C++
在 C++ 中使用 create_async:
使用 AsyncInfo.Run 中 。网:
Use create_async in C++:
Use AsyncInfo.Run in .NET:
我在微软论坛上发布了同样的问题,他们给了我两个回复。第一个是:
当我询问如何做到这一点时,另一个负责 PPL 的人告诉我:
那么,当时就没有解决办法。谢谢大家。
I posted the same question in Microsoft forums and they gave me two replies. The first was:
When I asked for the hard way to do this, another guy, someone responsible for PPL said me:
Then, there is no solution at that time. Thank you all.
是的,请参阅 Ben Kuhn 的 //BUILD/ 演讲:http://channel9.msdn。 com/events/BUILD/BUILD2011/PLAT-203T 他展示了如何构建异步 API。
目前,对于高级(C++/WX)类还没有好的解决方案。但是,如果您使用低级 C++ 接口,则可以使用 WRL::AsyncBase 类来帮助构建异步接口。
这里是有关 AsyncBase 类的文档。
Yes, see Ben Kuhn's //BUILD/ talk: http://channel9.msdn.com/events/BUILD/BUILD2011/PLAT-203T He shows how to build an asynchronous API.
At the current time, there is no good solution for high level (C++/WX) classes. However if you use the low level C++ interfaces, you can use the WRL::AsyncBase class to help build your async interfaces.
Here is documentation about the AsyncBase class.
这很令人困惑,但 WinRT C++ 代码和 WRL 之间是有区别的。您可以使用WRL直接编码到ABI层。 WRL 不使用异常,但喜欢模板。 WinRT 的推荐编码风格与 WRL 不同。
我不确定是否每个人都可以做到这一点,但是使用 WRL 通常需要实现一个继承的类:
然后您可以使用
It is confusing, but there is a difference between WinRT C++ code and WRL. You can use WRL to code to the ABI layer directly. WRL does not use exceptions, but loves templates. The recommend coding style for WinRT is not the same as WRL.
I am not sure if everyone can do this, but using WRL you in general need to implement a class that inherits:
Then you can use
C++ WinRT 现在是实现 WinRT 异步方法的最佳方式。这使用了新的 C++ 语言功能
co_await
和co_return
(正在标准化过程中)。阅读 上的文档此页面。C++ WinRT is now the best way to implement WinRT async methods. This uses
co_await
andco_return
, new C++ language features (in the process of standardization). Read the docs on this page.