winrt::fire_and_fullet,这是干什么的



我正在将C++/CX应用程序移植到C++/WinRT核心应用程序。

我在这个链接上找到了一个有用的示例代码(Simple3DGameDX(。

https://github.com/microsoft/Windows-universal-samples/tree/master/Samples/Simple3DGameDX/cppwinrt

并且它的Suspending方法的返回类型是winrt::fire_and_fullet。但在C++/CX中的另一个例子中,其Suspending方法的返回类型是void。

为什么这个返回类型在C++/WinRT中不是void?这是干什么的?

C++/WinRT

winrt::fire_and_forget OnSuspending(IInspectable const& /* sender */, SuspendingEventArgs const& args)

C++/CX-

void OnSuspending(Object^ Sender, SuspendingEventArgs^ Args)

为什么这个返回类型在C++/WinRT中不是void?这是干什么的?

除了Fire and forget的文档外,请注意以下内容:函数本身在其主体中使用co_await运算符。

这要求函数本身是协程友好的,并且可以编译成";堆叠式";窗体,用于异步执行。void返回类型不起作用,但fire_and_forget结构可以,因为C++/WinRT为其定义了协程处理,正如文档中所解释的那样。

可以将其视为void,它可以是异步的,不需要等待

winrt::fire_and_fullet,这能做什么?

请参阅此处的文档,

有时,你有一个任务可以与其他工作同时完成,你不需要等待该任务完成(没有其他工作依赖于它(,也不需要它返回值。在这种情况下,你可以关闭任务并忘记它。你可以通过编写一个返回类型为winrt::fire_and_filter(而不是Windows运行时异步操作类型或并发::task(的协程来实现这一点

最新更新