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

Use wxthread to update content of wxframe in C++

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

现在我需要的是不断更新packets in和packets out字段。我有一个函数可以计算进出数据包。所以我想我需要连续执行该功能,直到用户关闭 frame.

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

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

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