gpt4 book ai didi

winapi - 使用 Boost 的 ASIO,我如何等待 Windows 事件?

转载 作者:行者123 更新时间:2023-12-02 01:14:32 25 4
gpt4 key购买 nike

当 Windows 事件发出信号时,我的程序需要正常终止。我正在使用 Boost 的 ASIO 库作为它的套接字。我只有一个 io_service 对象。如何使用 io_service '注册'此事件句柄,以便在事件发出信号时调用回调?

最佳答案

如果您正在 Windows 上寻找 Boost.Asio 的终止处理,您可以查看示例 here

简而言之,您需要处理获胜事件并在系统上调用停止。

BOOL WINAPI console_ctrl_handler(DWORD ctrl_type)
{
switch (ctrl_type)
{
case CTRL_C_EVENT:
case CTRL_BREAK_EVENT:
case CTRL_CLOSE_EVENT:
case CTRL_SHUTDOWN_EVENT:
console_ctrl_function();
return TRUE;
default:
return FALSE;
}
}

这使用了一个函数对象:

boost::function0<void> console_ctrl_function;

您需要绑定(bind)到系统的关闭/停止例程。

// Set console control handler to allow server to be stopped.
console_ctrl_function = boost::bind(&your_system::shutdown, &s);
SetConsoleCtrlHandler(console_ctrl_handler, TRUE);

关于winapi - 使用 Boost 的 ASIO,我如何等待 Windows 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7602507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com