2010-12-14 28 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/

希望有助於避免此類問題

相關問題