public static bool DownloadFile(string url, string downloadDirectory) { try { var filePath = PathsHelper.CreatePath(url, downloadDirectory); WebClient.DownloadProgressChanged += HandleDownloadProgress; WebClient.DownloadFileCompleted += HandleDownloadComplete; var syncObject = new object(); lock (syncObject) { WebClient.DownloadFileAsync(new Uri(url), filePath, syncObject); ThreadsHelper.MonitorWait(syncObject); } return(true); } catch { return(false); } }