Avoid NRE and cast exception
No need to call items.Clear() on every iteration
Use the TaskAsync variant of the method
Pass the cancellation token
DownloadFileTaskAsync does not use DownloadFileCompleted event.