不能将 create_async() 与 WRL WinRT 组件一起使用
Can't use create_async() with WRL WinRT component
我想使用 WRL 编写一个具有异步支持的 WinRT 组件,但我发现即使我包含ppltask.h
和using namespace concurrency
create_async()
也是未定义的如何使用 WRL 模式创建后台任务?
我的函数是这样的:
HRESULT GetStreamAsync([out, retval] IAsyncOperation<IRRandomAccessStream*>** operation);
我也尝试使用 IThreadPoolStatics->RunAsync()
,但似乎它只能在IAsyncAction
的情况下使用并且没有返回值。有人可以帮忙吗?
concurrency::create_async
只能在C++/CX 中使用(这可能没有在文档中明确说明,但所有可能的返回类型都是帽子类型,表明它只能在 C++/CX 中使用)。
WRL包括Microsoft::WRL::AsyncBase
基类模板,您可以从中派生该模板以使用 C++ 和 WRL 实现异步操作。
我不知道包装std::future
或concurrency::task
的规范实现,但您可以在 Boost 许可的 CxxReflect 库中找到一个实现示例(搜索 async_operation_base
和 task_based_async_operation
)。
相关文章:
- 是否可以用C++/WinRT将windows 10.0.14393作为目标
- 将 win32 hbitmap 转换为 winrt softwarebitmap
- 升级到 Windows 10 版本 1809 SDK 后,我无法编译使用 C++/WinRT 的项目
- 尝试从 XamlApplication 编译 C++/WinRT 空白应用程序时,我收到未解析的外部符号 winrt_make_*
- 在 Winrt/C++ 中使用应用服务
- 无法将运行时类绑定到 XAML T 必须是 WinRT 类型
- 是否可以从控制台应用程序使用 C++/WinRT 创建窗口?
- WinRT 应用调用 win32 c++ dll 发送参数
- 从 WinRT C++组件访问 COM 对象
- 使用 c++/WinRT Direct3D UWP Game DR 模板 Direct X11 的错误消息
- C++应用程序缺少 winrt::Windows::Storage::Streams::D ataWriter
- 我可以用C++/WinRT编写一个DLL,供windows桌面应用程序(而不是UWP)或Unity插件使用吗
- 如何在c++winrt中取消装箱多值字符串
- 在 c++ winrt 导航视图中,如何找到选择/单击的导航项?
- C++/WinRT,Windows SDK 17134的一部分与Visual Studio 15.8 Preview 3
- 如何从 c++ winrt UWP 应用中的代码将文本添加到富文本块
- 不能将 create_async() 与 WRL WinRT 组件一起使用
- 如何使用WRL返回内置的winrt组件
- 在C++/WRL中使用静态方法创建WinRT组件
- WinRT WRL ABI collections