2010-12-14 4 views
2

Ich bin völlig neu in der Programmierung mit Threads, und da die Klasse QThreads verwendet, frage ich mich, warum ich nicht start Funktion von QThread in sich selbst aufrufen und seine run Funktion starten unabhängig von einem anderen Thread (das Programm scheint abstürzen, wenn ich das mache). Stattdessen muss ich die Startfunktion von überall aufrufen, wo das Objekt deklariert wurde. Warum ist das?Warum kann ich die Startfunktion einer Klasse nicht von selbst aufrufen?

Einige Code:

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

Das ist im Grunde, was meine Klasse tut. Wenn ich someFunction rufe, stürzt das Programm ab. Wenn ich die start Anweisung von obwohl, und Anruf start von außerhalb des Programms entfernen, dann funktioniert es gut.

+0

Beitrag einige Code zu vermeiden hilft. –

+0

Welche Art von Funktion ist Start? statisch oder so? Bitte poste mehr Code. – Arunmu

+0

@ArunMu nichts ist statisch – wrongusername

Antwort

2

QThread sollte nur abgeleitet werden, wenn Sie die Thread-Fähigkeit erweitern möchten, um es nicht für Ihren Job so zu spezialisieren. Diese article würde Ihnen helfen, die Verwendung von QThread zu verstehen.

Sie müssen also ein QThread erstellen und von außen starten und dann ein Objekt dorthin verschieben, das den Job erledigt. Lesen Sie dieses Beispiel: http://labs.qt.nokia.com/2006/12/04/threading-without-the-headache/

Hoffnung, dass diese Art von Problem