None of these solutions worked for me, or were not complete. Maybe this post was old and newer versions of .NET made it easier? Anyway, the following small code did the job for me so nicely:
static async Task DownloadFile(string url, string filePath)
{
using (var wc = new WebClient())
await wc.DownloadFileTaskAsync(url, filePath);
}
And here how you can call the method:
Task.Run(async () => { await DownloadFile(url, filePath); }).Wait();