Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

QThread & startTimer() Timers can only by used with threads started with QThread ??

Ostatnio zmodyfikowano 2016-06-23 22:09
Autor Wiadomość
alien1983
Temat założony przez niniejszego użytkownika
QThread & startTimer() Timers can only by used with threads started with QThread ??
» 2016-06-23 21:11:02
Witam,
mam taki problem z timerem i wątkami.

błąd jest oczywisty, ale nie wiem jak go uniknąć.

mam klase dziedziczącą po QThread.

odpalaną z main()

w klasie po QThread w metodzie run()
ten kod powoduje błąd:

timerId = startTimer(1000);

uogólniając, jest klasa terminal (do obsługi consoli) tworze obiekt w main z tej klasy i uruchamiam w wątku. 
z innych wątków / klass mają przychodzić komunikaty które ta klasa wyświetla. Do tego potrzebuje timer - do wyświetlania cyklicznie pewnych informacji/ nie koniecznie inicjowanych z innych klas wątków.

użycie this->msleep(1000) w metodzie run wątku niestety blokuje cały wątek :/
P-149421
mateczek
» 2016-06-23 22:09:02
notabene po to Ja między innymi stosuje wątki by wykonywały operacje blokujące.
Wymiana danych ze sterownikiem trwa 3 sekundy nie ma problemu ładuje procedurę do wątku. Nie przejmuje się, że mam sleepy. Jak się wątek blokuje to żadna strata po to on jest !!!! (byle się aplikacja nie blokowała)
C/C++
void m_thread::run()
{
    QTimer timer;
    connect( & timer, SIGNAL( timeout() ), this, SLOT( timeout() ), Qt::DirectConnection );
   
    timer.start( 1000 );
    exec();
}


//edit
https://youtu.be/gqRoR2pGu6s
P-149429
« 1 »
  Strona 1 z 1