在 运行 时停止 Wt C++ 函数

Stop Wt C++ function while it's running

我正在使用 Wt(诙谐的)C++ 框架,但遇到了如何从 运行 停止函数的问题。如果单击按钮 open_doors_button,它会激活功能 doors_open_all,这需要很长时间才能完成。

如果用户想从 运行 停止此功能,就会出现问题。 我添加了一个函数 stop_doors_open_all,它改变了一个全局布尔值来停止之前的函数。问题是 func stop_doors_open_all 将在 func doors_open_all 完成后调用,使停止功能无用。

    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 事件的线程,您将需要 运行 在它自己的线程中运行慢函数。多线程就是你所描述的。