2010-12-14 5 views
2

Я совершенно не новичок в программировании с помощью потоков, и поскольку класс использует QThreads, мне интересно, почему я не могу вызвать функцию QThread start изнутри самого себя и запустить ее функцию run независимо от другого потока (программа кажется когда я это сделаю). Вместо этого я должен вызвать функцию запуска из того места, где был объявлен объект. Почему это?Почему я не могу вызвать функцию запуска класса изнутри?

Некоторый код:

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

Это в основном то, что делает мой класс. Когда я вызываю someFunction, программа вылетает из строя. Если я удалю оператор start с someFunction, и позвоните по телефону start вне программы, тогда он отлично работает.

+0

Post некоторый код. –

+0

какая функция запускается? статический или что-то еще? пожалуйста, напишите больше кода. – Arunmu

+0

@ArunMu ничего не статично – wrongusername

ответ

2

QThread должно быть получено только в том случае, если вы хотите расширить возможности потоков, а не специализироваться на такой работе. Это article поможет вам разобраться в обращении к QThread.

Итак, вы должны создать QThread и запустить его извне, а затем переместить объект к нему, который будет выполнять задание. Прочитайте этот пример: http://labs.qt.nokia.com/2006/12/04/threading-without-the-headache/

Надежда, что помогает избежать такого рода проблем

Смежные вопросы