//---------------------------------------------------------------------------void CThr::run(void){ // Объявляем Таймер pTimer = new QTimer(this); connect(pTimer, SIGNAL(timeout()), this, SLOT(s_OnTimer())); pTimer->start(1000); //--------- чтение пакетов и заполнение списка while (!flStop) { ..Здесь получаем некоторые данные и копируем в список, например QVector }}//---------------------------------------------------------------------------void CThr::s_OnTimer(void) { //..... Здесь по таймеру удаляем некоторые данные из QVector // Нужны ли здесь критические секции :EnterCriticalSection (&Sect); ... удаление данныхLeaveCriticalSection (&Sect);}
C++ (Qt)CThr::CThr() : ...{ moveToThread( this );} void CThr::run(void){ // Объявляем Таймер QTimer timer; connect( &timer, SIGNAL(timeout()), SLOT(s_OnTimer()), Qt::DirectConnection ); // укажим принудительно прямое подключение timer.start(1000); QEventLoop loop; //--------- чтение пакетов и заполнение списка while (!flStop) { ..Здесь получаем некоторые данные и копируем в список, например QVector loop.processEvents(); // прокрутили очередь сообщений + таймеры }}
C++ (Qt)void CThr::run(void){ // Объявляем Таймер QTimer timer; connect( &timer, SIGNAL(timeout()), SLOT(s_OnTimer()), Qt::DirectConnection ); // укажим принудительно прямое подключение timer.start(1000); QEventLoop loop; //--------- чтение пакетов и заполнение списка while (!flStop) { ..Здесь получаем некоторые данные и копируем в список, например QVector loop.processEvents(); // прокрутили очередь сообщений + таймеры }}
C++ (Qt)void CThr::run(void){ QTimer timer; connect( &timer, SIGNAL(timeout()), SLOT(s_OnTimer()), Qt::DirectConnection ); timer.start(1000); exec();}
C++ (Qt) while (!flStop) { ..Здесь получаем некоторые данные и копируем в список, например QVector loop.processEvents(); // прокрутили очередь сообщений + таймеры }}
C++ (Qt)loop.processEvents(QEventLoop::WaitForMoreEvents);