Esempio n. 1
0
/*!
 * \brief  功能概述 转发点调用这个函数
 * \param  参数描述 nTimeOut_是等待超时的时间
 * \return 返回值描述 返回true
 * \author zzy
 * \date   2015/5/27
 */
bool CValueBase::QtWaitForMultipleObjects(int nTimeOut_)
{
    if (m_pControlTimer == NULL)
    {
        m_pControlTimer = new QTimer;
        connect(m_pControlTimer,SIGNAL(timeout()),this,SLOT(OnTimeOut()));
    }
    m_pControlTimer->start(nTimeOut_);
    while (1)
    {
        if (CONTROL_FAILURE == m_nControlFlag)
        {
            qDebug()<<"执行失败";
            m_strResultMessage = "失败";
            m_pControlTimer->stop();
            return true;
        }else if (CONTROL_SUCCEED == m_nControlFlag)
        {
            qDebug()<<"执行成功";
            m_strResultMessage = "成功";
            m_pControlTimer->stop();
            return true;
        }else if (CONTROL_TIMEOUT == m_nControlFlag)
        {
            qDebug()<<"执行超时";
            m_strResultMessage = "超时";
            m_pControlTimer->stop();
            return true;
        }
        QCoreApplication::processEvents();
        QThread::usleep(1000);
    }
    return false;
}
Esempio n. 2
0
void CMessageTask::Run() {

    // call task specific initialization code.
    if ( !OnInit() ) {
#if INCLUDE_vTaskDelete == 1
        Delete();
        return;
#else
        // The task must not start due to initialization problem, but the FreeRTOS
        // vTaskDelete function is not defined by configuration file. Suspend the task.
        Suspend();
#endif
    }

    CMessage msg;
    for (;;) {

        if ( m_queue.Receive(&msg, m_nTimeOut) == pdTRUE ) {
            // Message Handling routine

            // Call the delegate, if one, before try to dispatch the event
            if (m_pDelegate) m_pDelegate->OnHandleEvent(msg);
            DispatchMessage(msg);
            // Call the delegate, if one, after tried to dispatch the event
            if (m_pDelegate) m_pDelegate->DidHandleEvent(msg);
        }
        else {
            // TODO: STF - timeout expired.
            OnTimeOut();
        }
    }
}
ScrollLabelEx::ScrollLabelEx(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::ScrollLabelEx)
    , m_timer(this)
    , m_pauseTimer(this)
    , m_intervalTime(100)
    , m_frame(0)
    , m_pixmapPerFrame(-2)
    , m_pauseTime(2000)
{
    ui->setupUi(this);

    connect(&m_timer, SIGNAL(timeout()), this, SLOT(OnTimeOut()));
    connect(&m_pauseTimer, SIGNAL(timeout()), this, SLOT(OnPauseTimeOut()));
    m_timer.setInterval(m_intervalTime);
    m_pauseTimer.setInterval(m_pauseTime);
    m_pauseTimer.setSingleShot(true);
}
Esempio n. 4
0
void CEventThread::RunThread()
{
	Log(StrF(_T("Start of CEventThread::RunThread() Name: %s"), m_threadName));

	m_threadRunning = true;
	m_threadWasStarted = true;
	HANDLE *pHandleArray = new HANDLE[m_eventMap.size()];

	int indexPos = 0;
	for(EventMapType::iterator it = m_eventMap.begin(); it != m_eventMap.end(); it++)
	{
		pHandleArray[indexPos] = it->first;
		indexPos++;
	}

	SetEvent(m_hEvt);
	ResetEvent(m_hEvt);

	while(m_exitThread == false)
	{
		DWORD event = WaitForMultipleObjects((DWORD)m_eventMap.size(), pHandleArray, FALSE, m_waitTimeout);

		if(event == WAIT_FAILED)
		{
			LPVOID lpMsgBuf = NULL;
			DWORD dwErr = GetLastError();
			FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
							FORMAT_MESSAGE_FROM_SYSTEM |
							FORMAT_MESSAGE_IGNORE_INSERTS,
							NULL,
							dwErr,
							MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
							(LPTSTR) &lpMsgBuf,
							0,
							NULL);

			ASSERT(!lpMsgBuf);
			LocalFree(lpMsgBuf);
		}
		else if(event == WAIT_TIMEOUT)
		{
			OnTimeOut(m_param);
		}
		else
		{
			HANDLE firedHandle = pHandleArray[event - WAIT_OBJECT_0];
			int eventId = m_eventMap[firedHandle];
			if(eventId == EXIT_EVENT)
			{				
				break;
			}
			else
			{
				Log(StrF(_T("Start of CEventThread::RunThread() - OnEvent %d - Name %s"), eventId, m_threadName));
				OnEvent(eventId, m_param);
				Log(StrF(_T("End of CEventThread::RunThread() - OnEvent %d - Name: %d"), eventId, m_threadName));
			}
		}
	}

	UndoFireEvent(EXIT_EVENT);

	SetEvent(m_hEvt);

	Log(StrF(_T("End of CEventThread::RunThread() Name: %s"), m_threadName));

	m_threadRunning = false;
}