Simple implementation of ITask interface with backing fields. All members are marked as virtual so it is possible to override them in derived classes.
TasksManager class is responsible for starting tasks. Task descriptions are obtained from the associated TasksManager.Config object.
The interface all tasks should implement. See each members' descriptions for details.