我完全不熟悉线程编程,并且由于该类使用 QThreads,我想知道为什么我不能从自身内部调用 QThread 的 start
函数并让它的 运行
函数开始独立于另一个线程执行(当我这样做时程序似乎崩溃了)。相反,我必须从声明对象的任何地方调用 start 函数。这是为什么?
部分代码:
class ClassWithThread : public QThread
{
public:
ClassWithThread() {}
someFunction() {start();}
run()
{
//do some stuff here
}
}
我的类(class)基本上就是这样做的。当我调用 someFunction
时,程序崩溃了。但是,如果我从 someFunction
中删除 start
语句,并从程序外部调用 start
,那么它就可以正常工作。
最佳答案
QThread
仅当您想扩展线程功能时才应派生,而不是像这样专门针对您的工作。这article将帮助您理解 QThread
的使用。
因此您必须创建一个 QThread 并从外部启动它,然后将一个对象移动到它来完成这项工作。阅读这个例子:http://labs.qt.nokia.com/2006/12/04/threading-without-the-headache/
希望能帮助避免此类问题
关于c++ - 为什么我不能从自身内部调用类的启动函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4436083/