C++ C++;,根框架:定期调用成员方法

C++ C++;,根框架:定期调用成员方法,c++,methods,root-framework,C++,Methods,Root Framework,我的应用程序中有一个类显示信息。 我必须通过SOAP从服务器获取这些信息。 这是我的班级: class InfoControl : public TGCompositeFrame { private: //char*, int.... bool bWorking; public: InfoControl(const TGWindow *p); virtual ~InfoControl(); void SetEventRate(char* evnum);

我的应用程序中有一个类显示信息。
我必须通过SOAP从服务器获取这些信息。
这是我的班级:

class InfoControl : public TGCompositeFrame {
private:
    //char*, int....
    bool bWorking;
public:
    InfoControl(const TGWindow *p);
    virtual ~InfoControl();
    void SetEventRate(char* evnum);
    void SetBufferRate(char* rate);
    void SetSuccess(char *s);
    void RequestInfo();
    ClassDef(InfoControl,1)  //useless : ROOT specific stuff
};
我希望定期调用
RequestInfo()
方法,只要
bWorking
为true。 我了解了
pthread
解决方案,但不知道如何实现这一点。也许更琐碎的事情是可能的

提前感谢您的帮助,
eo.

毫米。。。Mb

while (bWorking)
{
    RequestInfo();
    /* sleep os sleep function, or boost, or something else. 
    time - period to sleep.*/
    sleep(time);
}

或者您想要异步调用,并使用一些计时器?

由于它是一个
无效的
函数,所以有点不清楚
RequestInfo()
应该对外部产生什么样的影响,但是如果它以某种方式与外部对话,并且不专门执行某些内部作业(那么在额外的线程中运行它就可以了)你也许应该重新考虑你的设计

b工作
已经是私有的,因此
InfoControl
知道它何时更改。然后,您可以使用类似于ROOT的Qt-slots实现的东西(例如,使用
TQObject
)来触发所需的操作,仅当
bWorking
发生更改时(例如,将其挂接到某个
SetWorking()
)即可。

确定,找到答案。 如果有人有相同的问题:

TTimer *timer = new TTimer();  
timer->Connect("Timeout()", "InfoControl", this, "RequestInfo()");  
timer->Start(1000, kFALSE);

我需要在我的程序中做其他事情。。。我不能把所有的时间都花在循环上。我认为有两种变体,第一种是周期性地执行循环的线程,或者使用std::async,第二种是使用一些异步调用,例如boost::asio,但是asio是网络库。。。