2010-12-14 51 views
2

我完全不熟悉使用线程编程,而且由于类正在使用QThreads,所以我想知道为什么我不能从其内部调用QThread的start函数,并且它的run函数开始独立于另一个线程开始执行(程序看起来像当我这样做时会崩溃)。相反,我必须从声明对象的任何地方调用start函数。为什么是这样?为什么我不能从本身内部调用类的启动函数?

一些代码:

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

这基本上是我的课做什么。当我打电话给someFunction程序崩溃。如果我从someFunction中删除start声明,并且从程序外部调用start,那么它工作正常。

+0

发布一些代码。 – 2010-12-14 05:21:57

+0

启动什么样的功能?静态或东西?请发布更多代码。 – Arunmu 2010-12-14 05:32:21

+0

@ArunMu没有什么是静态的 – wrongusername 2010-12-14 05:34:57

回答

2

QThread只有在想要扩展线程能力时才能派生,而不是像这样为您的工作专门化它。这article将帮助您了解QThread的使用。

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

希望有助于避免此类问题

相关问题