C# download files in parallel

Здравейте.Отдавна не съм писал в този форум, но реших да потърся помощ относно една задачка.

Write a console application using C#, which accomplishes the following :

- Output currently available 10 files(file names)
- Store the last 10 files locally and load it on app start-up.
- Delete any unnecessary/old files after syncing.
- Refresh the list automatically every 5 minutes using the following logic: Download the files in a parallel way, having 3 parallel downloads at all times. You shouldn’t run more than 3 tasks at a time and there should not be any download tasks explicitly waiting for each other.
- Errors should be handled gracefully, and displayed to the user via console.

Така ето и моето решение.по принцип работи, но наистина незнам дал това е точния начин.Освен това не съм сигурен как точно да имплементирам грешките.