winrt::fire_and_forget,这是做什么的?
winrt::fire_and_forget, What does this do?
我正在将 C++/CX 应用程序移植到 C++/WinRT 核心应用程序。
我在 link.
找到了有用的示例代码 (Simple3DGameDX)
https://github.com/microsoft/Windows-universal-samples/tree/master/Samples/Simple3DGameDX/cppwinrt
并且它的 Suspending 方法的 return 类型是 winrt::fire_and_forget。
但是 C++/CX 中的另一个例子,它的 Suspending 方法的 return 类型是 void.
为什么这个 return 类型在 C++/WinRT 中不是无效的?
这是做什么的?
C++/WinRT
winrt::fire_and_forget OnSuspending(IInspectable const& /* sender */, SuspendingEventArgs const& args)
C++/CX
void OnSuspending(Object^ Sender, SuspendingEventArgs^ Args)
winrt::fire_and_forget, What does this do?
请参考文档here,
有时候,你有一个任务可以与其他工作同时完成,你不需要等待那个任务完成(没有其他工作依赖于它),你也不需要需要它 return 一个值。在那种情况下,您可以关闭任务并忘记它。您可以通过编写 return 类型为 winrt::fire_and_forget 的协程(而不是 Windows 运行时异步操作类型之一或 concurrency::task)来实现。
why this return type is not void in C++/WinRT? and What does this do?
除了正文中 Fire and forget, note the following: the function itself uses co_await
运算符的文档。
这要求函数本身是协程友好的,并且可以编译成“无堆栈”形式,以便异步执行。 void
return 类型不起作用,但 fire_and_forget
结构没问题,因为 C++/WinRT 定义了它的协程处理,如文档所述。
将此视为 void
,它可以是异步的,无需等待。
我正在将 C++/CX 应用程序移植到 C++/WinRT 核心应用程序。
我在 link.
找到了有用的示例代码 (Simple3DGameDX)https://github.com/microsoft/Windows-universal-samples/tree/master/Samples/Simple3DGameDX/cppwinrt
并且它的 Suspending 方法的 return 类型是 winrt::fire_and_forget。 但是 C++/CX 中的另一个例子,它的 Suspending 方法的 return 类型是 void.
为什么这个 return 类型在 C++/WinRT 中不是无效的? 这是做什么的?
C++/WinRT
winrt::fire_and_forget OnSuspending(IInspectable const& /* sender */, SuspendingEventArgs const& args)
C++/CX
void OnSuspending(Object^ Sender, SuspendingEventArgs^ Args)
winrt::fire_and_forget, What does this do?
请参考文档here,
有时候,你有一个任务可以与其他工作同时完成,你不需要等待那个任务完成(没有其他工作依赖于它),你也不需要需要它 return 一个值。在那种情况下,您可以关闭任务并忘记它。您可以通过编写 return 类型为 winrt::fire_and_forget 的协程(而不是 Windows 运行时异步操作类型之一或 concurrency::task)来实现。
why this return type is not void in C++/WinRT? and What does this do?
除了正文中 Fire and forget, note the following: the function itself uses co_await
运算符的文档。
这要求函数本身是协程友好的,并且可以编译成“无堆栈”形式,以便异步执行。 void
return 类型不起作用,但 fire_and_forget
结构没问题,因为 C++/WinRT 定义了它的协程处理,如文档所述。
将此视为 void
,它可以是异步的,无需等待。