class Poco::Task

Overview

A Task is a subclass of Runnable that has a name and supports progress reporting and cancellation. More…

#include <Task.h>

class Task:
    public Poco::Runnable,
    public Poco::RefCountedObject
{
public:
    // enums

    enum TaskState;

    // construction

    Task(const std::string& name);

    // methods

    const std::string&
    name() const;

    float
    progress() const;

    virtual
    void
    cancel();

    bool
    isCancelled() const;

    TaskState
    state() const;

    void
    reset();

    virtual
    void
    runTask() = 0;

    virtual
    void
    run();

protected:
    // methods

    bool
    sleep(long milliseconds);

    void
    setProgress(float progress);

    virtual
    void
    postNotification(Notification* pNf);

    void
    setOwner(TaskManager* pOwner);

    TaskManager*
    getOwner() const;

    void
    setState(TaskState state);
};

Inherited Members

public:
    // methods

    virtual
    void
    run() = 0;

    void
    duplicate() const;

    void
    release() const;

    int
    referenceCount() const;

Detailed Documentation

A Task is a subclass of Runnable that has a name and supports progress reporting and cancellation.

A TaskManager object can be used to take care of the lifecycle of a Task.

Construction

Task(const std::string& name)

Creates the Task.

Methods

const std::string&
name() const

Returns the task’s name.

float
progress() const

Returns the task’s progress.

The value will be between 0.0 (just started) and 1.0 (completed).

virtual
void
cancel()

Requests the task to cancel itself.

For cancellation to work, the task’s runTask() method must periodically call isCancelled() and react accordingly.

Can be overridden to implement custom behavior, but the base class implementation of cancel() should be called to ensure proper behavior.

bool
isCancelled() const

Returns true if cancellation of the task has been requested.

A Task ‘s runTask() method should periodically call this method and stop whatever it is doing in an orderly way when this method returns true.

TaskState
state() const

Returns the task’s current state.

void
reset()

Sets the task’s progress to zero and clears the cancel flag.

virtual
void
runTask() = 0

Do whatever the task needs to do.

Must be overridden by subclasses.

virtual
void
run()

Calls the task’s runTask() method and notifies the owner of the task’s start and completion.

bool
sleep(long milliseconds)

Suspends the current thread for the specified amount of time.

If the task is cancelled while it is sleeping, sleep() will return immediately and the return value will be true. If the time interval passes without the task being cancelled, the return value is false.

A Task should use this method in favor of Thread::sleep().

void
setProgress(float progress)

Sets the task’s progress.

The value should be between 0.0 (just started) and 1.0 (completed).

virtual
void
postNotification(Notification* pNf)

Posts a notification to the task manager’s notification center.

A task can use this method to post custom notifications about its progress.

void
setOwner(TaskManager* pOwner)

Sets the (optional) owner of the task.

TaskManager*
getOwner() const

Returns the owner of the task, which may be NULL.

void
setState(TaskState state)

Sets the task’s state.