Этот код работает, но если во время загрузки возникает ошибка недоступности сервера, он не может ее обнаружить.
String targetFileBeingDownloaded = "foo.zip"
var downloadsPath = Environment.GetEnvironmentVariable("USERPROFILE") + @"\Downloads\" + targetFileBeingDownloaded;
for (int delay = 0; delay < 1000; delay++) {
if (File.Exists(downloadsPath)) { break; }
Thread.Sleep(1000);
}