Boost.Asio Win32 Windows应用程序

海尔

我已经使用Visual Studio向导创建了一个新的Win32 Windows应用程序。并将Boost.Asio添加到项目中。我想使用它的duration_timer每秒钟做一些重复的工作。尽管计时器(及其线程)运行良好,但由于io_service.run()阻止了UI线程,所以我鼓励了UI不更新的问题。快速搜索后,我发现了该线程这实际上是同样的问题!因此,我将代码移到GetMessage()循环中,并将io_service.run()更改为io_service.poll_one()。

// Main message loop:
while (GetMessage(&msg, NULL, 0, 0))
{
    //Windows main loop stuff
    if (io.stopped())
        io.reset();
    io.poll_one();
}

好吧,它正在工作,但是仅当有Windows消息等待时,这是显而易见的。我还能做另一件事吗?还是应该使用WinAPI线程代替boost?

本·沃格特

它不像Boost那样可移植,但是Windows已经提供了与消息循环集成的不错的事件API。

您可以使用CreateWaitableTimer和替换GetMessageMsgWaitForMultipleObjects然后,循环将为传入消息或计时器唤醒。也可以使用其他类型的手柄。

当然,总SetTimer有一些会导致您收到WM_TIMER消息。但我更喜欢等待计时器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

boost :: asio的应用

来自分类Dev

优雅地终止基于Boost Asio的Windows控制台应用程序

来自分类Dev

优雅地终止基于Boost Asio的Windows控制台应用程序

来自分类Dev

在Win32应用程序中使用Windows窗体

来自分类Dev

Boost Asio - boost::bind 导致程序崩溃

来自分类Dev

用无效的套接字调用boost :: asio :: write()导致我的Blackberry 10应用程序崩溃

来自分类Dev

Windows XP上的Inno Setup安装程序显示“无效的Win32应用程序”

来自分类Dev

Boost Asio绑定读取处理程序

来自分类Dev

如何使用 boost::asio::spawn 构建程序

来自分类Dev

从Win32应用程序运行外部exe

来自分类Dev

Win32在应用程序内使用资源字体

来自分类Dev

在Win32应用程序中连续运行代码

来自分类Dev

C#应用程序中的Win32异常

来自分类Dev

LaunchFullTrustProcessForCurrentAppAsync 杀死 win32 应用程序

来自分类Dev

Visual Studio:“不是 Win32 应用程序”错误

来自分类Dev

win7 boost :: asio :: windows :: stream_handle构造函数引发错误

来自分类Dev

win7 boost :: asio :: windows :: stream_handle构造函数引发错误

来自分类Dev

应用程序无法在Windows 2003中以Win32模式运行

来自分类Dev

无法在VS 2013,Windows 8.1中创建Win32控制台应用程序

来自分类Dev

可以打开Windows的Win32控制台应用程序

来自分类Dev

应用程序无法在Windows 2000中以WIN32模式运行

来自分类Dev

可以打开Windows的Win32控制台应用程序

来自分类Dev

应用程序无法在Windows 2003中以Win32模式运行

来自分类Dev

Win32应用程序,在调用Windows东西之前调用自定义类方法

来自分类Dev

在通用 Windows 应用程序 C++ 上使用 win32 DLL 库

来自分类Dev

win32应用程序,Windows窗体应用程序和控制台应用程序有什么区别?

来自分类Dev

将DOS应用程序转换为Win32控制台应用程序?

来自分类Dev

将DOS应用程序转换为Win32控制台应用程序?

来自分类Dev

当使用async_accept接收连接请求时,boost :: asio :: ip :: tcp :: acceptor终止应用程序

Related 相关文章

  1. 1

    boost :: asio的应用

  2. 2

    优雅地终止基于Boost Asio的Windows控制台应用程序

  3. 3

    优雅地终止基于Boost Asio的Windows控制台应用程序

  4. 4

    在Win32应用程序中使用Windows窗体

  5. 5

    Boost Asio - boost::bind 导致程序崩溃

  6. 6

    用无效的套接字调用boost :: asio :: write()导致我的Blackberry 10应用程序崩溃

  7. 7

    Windows XP上的Inno Setup安装程序显示“无效的Win32应用程序”

  8. 8

    Boost Asio绑定读取处理程序

  9. 9

    如何使用 boost::asio::spawn 构建程序

  10. 10

    从Win32应用程序运行外部exe

  11. 11

    Win32在应用程序内使用资源字体

  12. 12

    在Win32应用程序中连续运行代码

  13. 13

    C#应用程序中的Win32异常

  14. 14

    LaunchFullTrustProcessForCurrentAppAsync 杀死 win32 应用程序

  15. 15

    Visual Studio:“不是 Win32 应用程序”错误

  16. 16

    win7 boost :: asio :: windows :: stream_handle构造函数引发错误

  17. 17

    win7 boost :: asio :: windows :: stream_handle构造函数引发错误

  18. 18

    应用程序无法在Windows 2003中以Win32模式运行

  19. 19

    无法在VS 2013,Windows 8.1中创建Win32控制台应用程序

  20. 20

    可以打开Windows的Win32控制台应用程序

  21. 21

    应用程序无法在Windows 2000中以WIN32模式运行

  22. 22

    可以打开Windows的Win32控制台应用程序

  23. 23

    应用程序无法在Windows 2003中以Win32模式运行

  24. 24

    Win32应用程序,在调用Windows东西之前调用自定义类方法

  25. 25

    在通用 Windows 应用程序 C++ 上使用 win32 DLL 库

  26. 26

    win32应用程序,Windows窗体应用程序和控制台应用程序有什么区别?

  27. 27

    将DOS应用程序转换为Win32控制台应用程序?

  28. 28

    将DOS应用程序转换为Win32控制台应用程序?

  29. 29

    当使用async_accept接收连接请求时,boost :: asio :: ip :: tcp :: acceptor终止应用程序

热门标签

归档