我的应用程序中有一个显示信息的课程 我必须通过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
方法。
我对pthread
解决方案感兴趣,但不知道如何实现这一点。也许更微不足道的事情可能吗?
提前感谢您的帮助,
EO。
答案 0 :(得分:0)
嗯... Mb
while (bWorking)
{
RequestInfo();
/* sleep os sleep function, or boost, or something else.
time - period to sleep.*/
sleep(time);
}
或者您想要使用某个计时器进行异步调用?
答案 1 :(得分:0)
有点不清楚RequestInfo()
应该对外界产生什么样的影响,因为它是void
,但如果它以某种方式与外界交谈并且不完全是某种内部工作(然后在一个额外的线程中运行它会很好)你应该重新考虑你的设计。
bWorking
已经是私有的,因此InfoControl
知道它何时发生变化。然后,您可以使用ROOT的Qt插槽实现(例如使用TQObject
)来触发仅在bWorking
更改时触发所需操作(例如将其挂钩到某些SetWorking()
)。
答案 2 :(得分:0)
好的,发现了。 如果有人有同样的问题:
TTimer *timer = new TTimer();
timer->Connect("Timeout()", "InfoControl", this, "RequestInfo()");
timer->Start(1000, kFALSE);