當Windows事件變爲信號時,我的程序需要正常終止。我正在爲它的套接字使用Boost的ASIO庫。我只有一個io_service
對象。我如何'註冊'這個事件句柄與io_service
,所以它會在事件發出信號時調用回調函數?使用Boost的ASIO,我該如何等待Windows事件?
3
A
回答
2
如果您正在尋找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;
,你需要綁定到系統的關機/停止程序。
// Set console control handler to allow server to be stopped.
console_ctrl_function = boost::bind(&your_system::shutdown, &s);
SetConsoleCtrlHandler(console_ctrl_handler, TRUE);
0
與升壓看來,它有可能在事件變成信號調用句柄1.49開始,看到http://www.boost.org/doc/libs/1_49_0/doc/html/boost_asio/overview/windows/object_handle.html。
相關問題
- 1. 使用boost :: asio和strands的事件隊列:等待新事件
- 2. 如何在等待時取消`boost :: asio :: read`操作
- 3. 如何使用boost :: ASIO
- 4. BOOST ASIO使用
- 5. 如何使用等待或線程等待事件發生
- 6. 如何使用boost :: asio從網絡中斷中恢復如何使用boost :: asio
- 7. 我該如何等待在javascript中執行事件
- 8. 如何在1個線程上運行boost :: asio :: io_service喚醒等待條件
- 9. Boost線程等待條件
- 10. 我該如何等待JavaScript的結果?
- 11. 當我使用boost :: asio :: async_write發送一些大數據時,使用boost :: asio :: async_write
- 12. 等待事件
- 13. boost :: asio :: async_read和boost :: asio :: streambuf
- 14. boost :: asio :: windows :: stream_handle in boost 1.46.1在哪裏?
- 15. 如何使用boost asio連接到elasticsearch?
- 16. boost :: asio:線程本地異步事件
- 17. 使用EventWaitHandle等待命名事件的Windows服務問題。
- 18. 使得使用boost :: ASIO
- 19. 我該如何等待拉力?
- 20. 我該如何等待Angular4 HttpClient響應?
- 21. 我該如何等待回調?
- 22. 我該如何等待TTimer完成?
- 23. 我該如何等待Parallel.ForEach完成
- 24. 我該如何等待HANDLE/SafeHandle?
- 25. 我該如何等待ABPeoplePickerNavigationController被解僱
- 26. boost boost :: asio
- 27. 我該如何等待價值改變使用JavaScript的HTML
- 28. boost deadline_timer不等待
- 29. 等待用戶事件
- 30. 用Selenium等待JavaScript事件
這很糟糕,但謝謝。我最終這樣做了...... – unixman83