CTestTask::EStatus CTestTask::Execute(void) { int duration = s_WaitPeriods[m_Serial]; CStopWatch timer(CStopWatch::eStart); if (s_CancelTypes[m_Serial] == eCheckCancel) { MSG_POST("Task " << m_Serial << ": " << duration << " with checking"); for (int i = 0; i < 10; ++i) { SleepMicroSec(duration * 100); if (IsCancelRequested()) { MSG_POST("Task " << m_Serial << " was cancelled"); return eCanceled; } } } else { MSG_POST("Task " << m_Serial << ": " << duration); SleepMilliSec(duration); } if (IsCancelRequested()) { MSG_POST("Task " << m_Serial << " was cancelled without check (time spent - " << timer.Elapsed() << ")"); return eCanceled; } else { MSG_POST("Task " << m_Serial << " complete (time spent - " << timer.Elapsed() << ")"); return eCompleted; } }
CPrefetchRequest::EStatus CPrefetchRequest::Execute(void) { try { EStatus result = CThreadPool_Task::eCompleted; if (m_Action.NotNull()) { if (! GetAction()->Execute(Ref(this))) { if ( IsCancelRequested() ) result = CThreadPool_Task::eCanceled; else result = CThreadPool_Task::eFailed; } } return result; } catch ( CPrefetchCanceled& /* ignored */ ) { return CThreadPool_Task::eCanceled; } catch ( prefetch::CCancelRequestException& exc ) { exc.SetFinished(); return CThreadPool_Task::eCanceled; } }