使用 wxthread 在 C++ 中更新 wxframe 的内容

Use wxthread to update content of wxframe in C++

本文关键字:wxframe 更新 wxthread C++ 使用      更新时间:2023-10-16

我是使用线程的新手。我在C++开发了一个程序,该程序使用wxwidgets来显示通过网络接口接收的数据包计数。到目前为止,我所做的是:我在wxdialog中有一个wxbutton。单击按钮时,将打开包含wxgridwxframewxgrid包含接口名称、数据包传入和数据包输出等信息。

现在我需要的是不断更新数据包输入和数据包输出字段。我有一个计算数据包输入和输出的函数。所以我认为我需要连续执行该功能,直到用户关闭frame

我希望可以利用wxthread来执行此操作。但是不知道如何开始或如何从线程执行函数。有人可以指导我吗..谢谢

工作线程不能直接访问任何 GUI 对象,因此您需要将事件发布到主线程,您可以在主线程中为它们定义事件处理程序,这些处理程序将执行您需要的任何操作。对于此类事件,有一个方便的基类称为 wxThreadEvent,您可能会发现它很有用。

或者,特别是如果你使用 C++11,你可以使用 CallAfter(),它允许你在主线程上下文中执行回调。这对于 C++11 lambda 特别好,因为它允许您将所有代码保存在同一个位置,而无需将其提取到单独的事件处理程序中。