This should work as well. Using the addSubTask method, add subtasks to the first task and create dependencies. The downside is: only the main task is shown in TaskManager, meaning tasks can't be canceled individually.

With this code, tasks are executed in order 1 2 3 0.
```
"""Preparing QgsTasks:"""
# tasklist
tasklist = [task0,task1,task2,task3]
# add all tasks, except first, recursevly as subtask to first task
subtasks = []
for i in range(1, len(tasklist)):
    tasklist[0].addSubTask(tasklist[i], subtasks, QgsTask.ParentDependsOnSubTask)
    subtasks.append(tasklist[i])
# pass only the first task to the taskManager
QgsApplication.taskManager().addTask(tasklist[0])
```

With this code, they will be executed in order 0 1 2 3:
```
"""Preparing QgsTasks:"""
# tasklist
tasklist = [task0,task1,task2,task3]
# add all tasks, except last task, recursevly as subtask to last task
subtasks = []
for i in range(0, len(tasklist)):
    tasklist[len(tasklist)-1].addSubTask(tasklist[i], subtasks, QgsTask.ParentDependsOnSubTask)
    subtasks.append(tasklist[i])
# pass only the last task to the taskManager
QgsApplication.taskManager().addTask(tasklist[len(tasklist)-1])
```