InternalTask::~InternalTask()
{
+ worker->join();
delete worker;
}
+void InternalTask::start()
+{
+ prepare();
+ worker->launch();
+}
+
Task::Status InternalTask::check()
{
- return worker->get_status();
+ Status result = worker->get_status();
+ if(result!=RUNNING)
+ signal_finished.emit(result==SUCCESS);
+ return result;
+}
+
+Task::Status InternalTask::wait()
+{
+ Status result;
+ while((result = check())==RUNNING) ;
+ return result;
}
InternalTask::Worker::Worker():
- status(RUNNING)
+ status(Task::RUNNING)
{ }