【发布时间】:2018-04-12 12:30:06
【问题描述】:
我正在使用 Wt (witty) C++ 框架,但遇到了一个如何停止函数运行的问题。如果按钮open_doors_button被点击,它会激活一个函数doors_open_all,需要很长时间才能完成。
如果用户想停止此功能的运行,就会出现问题。 我添加了一个函数 stop_doors_open_all,它改变了一个全局布尔值来停止前一个函数。问题是 func stop_doors_open_all 会在 funcdoors_open_all 完成后被调用,使得 stop 函数无用。
Wt::WPushButton *open_doors_button = new Wt::WPushButton("open all");
container_box->addWidget(open_doors_button);
open_doors_button->clicked().connect(boost::bind(&Servicemode::doors_open_all, this));
Wt::WPushButton *stop_doors_button = new Wt::WPushButton("stop opening");
container_box->addWidget(stop_doors_button);
stop_doors_button->clicked().connect(boost::bind(&Servicemode::stop_doors_open_all, this));
【问题讨论】:
-
如果您不想阻塞响应 Wt 事件的线程,则需要在自己的线程中运行慢速函数。多线程就是您所描述的。
-
这可能只是削减它,谢谢!但是,您知道如何将 boost::bind 与线程连接吗?
-
我已将我对您原始问题的回复发布为正确答案。看来您现在有一个新问题,应该这样发布。