2

我对线程编程完全陌生,而且由于该类使用的是 QThreads,我想知道为什么我不能start从自身内部调用 QThread 的函数并让它的run函数独立于另一个线程开始执行(当我做这个)。相反,我必须从声明对象的任何地方调用 start 函数。为什么是这样?

一些代码:

class ClassWithThread : public QThread
{
public:
    ClassWithThread() {}
    someFunction() {start();}
    run()
    {
        //do some stuff here
    }
}

这基本上就是我的班级所做的。当我调用someFunction程序崩溃。如果我从中删除该start语句someFunction,并start从程序外部调用,那么它可以正常工作。

4

1 回答 1

2

QThread只有当你想扩展线程能力时才应该派生,而不是像这样为你的工作专门化它。本文帮助您了解QThread.

所以你必须创建一个 QThread 并从外部启动它,然后将一个对象移动到它上面来完成这项工作。阅读这个例子: http: //labs.qt.nokia.com/2006/12/04/threading-without-the-headache/

希望有助于避免此类问题

于 2010-12-14T09:17:00.733 回答