Frage

Ich bin total neu mit Threads zu programmieren, und da die Klasse QThreads verwendet, frage ich mich, warum ich kein QThread der start Funktion aus sich selbst anrufen und haben ihre run Funktion starten unabhängig von einem anderen Thread ausgeführt wird (das Programm zum Absturz zu bringen scheint, wenn ich dies tun). Stattdessen muss ich von der Startfunktion aufrufen, wo das Objekt deklariert wurde. Warum ist das?

Einige Code:

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

Das ist im Grunde, was meine Klasse tut. Als ich rufe Sie die Programmabstürze someFunction. Wenn ich die start Aussage von someFunction aber, und Anruf start von außerhalb des Programms entfernen, dann funktioniert es gut.

War es hilfreich?

Lösung

QThread sollte nur abgeleitet werden, wenn Sie Thread-Fähigkeit erweitern wollen, es nicht so für Ihre Arbeit zu spezialisieren. Dieser Artikel würden Sie helfen, das zu verstehen, Verwendung von QThread.

So haben Sie eine QThread erstellen müssen und es von außen beginnen und dann ein Objekt, um es zu bewegen, die den Job machen werden. Lesen Sie dieses Beispiel: http: //labs.qt. nokia.com/2006/12/04/threading-without-the-headache/

Hoffnung, dass diese Art von Problem zu vermeiden hilft

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top