'Start the task and register a callback'

def start(self, task, progress=None, finish=None):

    if (progress is not None):
        progress.show()
    self.tasks.append(task)
    task_id = id(task)
    self.task_details[task_id] = (progress, finish)
    task.channel.finished.connect(self.finish, type=Qt.QueuedConnection)
    self.threadpool.start(task)
