我是使用线程的新手。我使用C++
在wxwidgets
中开发了一个程序,以显示通过网络接口接收的数据包的数量。到目前为止我所做的是:wxbutton
中有一个wxdialog
。点击按钮后,会打开包含wxframe
的{{1}}。 wxgrid
包含接口名称,数据包输入和数据包输出等信息。
现在我需要的是不断更新数据包和数据包输出字段。我有一个函数来计算数据包和数据包输出。所以我想我需要连续执行该功能,直到用户关闭wxgrid
。
我希望frame
可以用来执行此操作。但不知道如何开始或如何从一个线程执行一个函数。有人可以指导我..谢谢你
答案 0 :(得分:1)
工作线程无法直接访问任何GUI对象,因此您需要将事件发布到主线程,您可以在其中为它们定义事件处理程序,它们将执行您需要的任何操作。对于名为wxThreadEvent
的此类事件,有一个方便的基类,您可能会发现它很有用。
或者,特别是如果你使用C ++ 11,你可以使用CallAfter()来允许你在主线程上下文中执行回调。这对于C ++ 11 lambdas尤其不错,因为它允许您将所有代码保存在同一个地方,而不必将其提取到单独的事件处理程序中。