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

时间:2016-05-27 05:58:39

标签: c++ multithreading wxwidgets

我是使用线程的新手。我使用C++wxwidgets中开发了一个程序,以显示通过网络接口接收的数据包的数量。到目前为止我所做的是:wxbutton中有一个wxdialog。点击按钮后,会打开包含wxframe的{​​{1}}。 wxgrid包含接口名称,数据包输入和数据包输出等信息。

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

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

1 个答案:

答案 0 :(得分:1)

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

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