使用QFuture调用本地类函数
Using QFuture to call a local class function
我有一个UI程序,其中我使用QFuture
在一个不同的类中运行一个函数,该函数对处理器等很重,并导致我的UI崩溃,在使用QFuture将其线程化后,它工作得很好,但是我有另一个函数需要在之后调用,但是这个函数是在相同的类中,我从哪里调用它。
我用了同样的代码来做第二个但它只是显示了Timers
的错误我甚至没有使用,我也不知道我在参数中使用this
是否正确:
future = new QFuture<void>;
*future = QtConcurrent::run(this, &GUI::test);
test是一个局部函数,它是否与我不能有两个并发的::run调用或其他事情有关,我试着看文档,不幸的是没有帮助
当这个被调用时UI会被锁住然后我得到一些奇怪的警告,我认为线程化的意义在于UI不会崩溃
这是我的最佳猜测。
我猜你有以下情况。(注意:当你试图想出解决问题的办法时,了解你所处的情况是非常有用的。结果往往是OP以一种根本错误的方式进行某事,应该做一些完全不同的事情。
你有一个GUI。您有一个操作需要很长时间,您希望在工作线程中运行。在漫长的操作结束时,您需要调用GUI线程上的函数,可能是为了更新GUI或类似的东西。
使用QtConcurrent::run(&someObject, &someObject::task)启动后台任务。然后,当任务完成时,您需要在GUI线程上以某种方式得到通知。
正确的方法是将QtFutureWatcher附加到run()返回的未来,并将GUI类上的插槽连接到其完成的信号。Qt的信号机制将确保在正确的线程上调用slot。
相关文章:
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 在c++类上调用void函数
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- C++/CLI System.AccessViolation在托管类中调用非托管函数时出现异常
- 使用基类指针调用基类的值构造函数的语法是什么?
- 为用户定义的类正确调用复制构造函数/赋值运算符
- 仅在可变模板类中调用现有函数
- 无法为类成员调用函数
- C++调用使用重写函数的父类函数
- 在具有向量的类构造函数中进行析构函数调用
- 计算对类函数的所有调用次数
- 检查类是否具有可能重载的函数调用运算符
- 从多重继承中的派生类函数调用适当的父类函数
- 在类函数调用期间丢失私有变量信息
- 从基类函数调用派生类函数
- 基类函数调用的替代设计模式
- 从派生类函数调用基函数
- 如何从基类函数调用重写虚函数
- C++:从非类函数调用类方法
- Windows内CreateThread类函数调用,指针引用崩溃