private async Task Download() { while (Tools.CheckFileMd5(UpdateFile, _serverHash) == false) { metroLabel2.Text = @"0 MB/s"; metroLabel3.Text = @"0 von 0 MB's"; metroProgressBar1.Value = 0; if (File.Exists(UpdateFile)) { Logger.Write("Beschädigte Update Datei gefunden..."); try { File.Delete(UpdateFile); Logger.Write("Datei wurde Erfolgreich gelöscht..."); } catch (Exception ex) { Logger.Write("Datei Löschen Fehlgeschlagen - Grund: " + ex.Message); MetroMessageBox.Show(this, "Die Temporäre Update Datei (update.tmp) konnte nicht gelöscht werden." + Environment.NewLine + "Bitte Lösche die Datei Manuell und Versuche es anschließend Erneut!", "Löschen Fehlgeschlagen", MessageBoxButtons.OK, MessageBoxIcon.Warning); break; } } Logger.Write("Update wird heruntergeladen..."); try { var wClient = new BetterWebClient { Timeout = 10000 }; wClient.DownloadFileCompleted += _DownloadFileCompleted; wClient.DownloadProgressChanged += _DownloadProgressChanged; _sw.Start(); await wClient.DownloadFileTaskAsync(new Uri(_serverUrl), UpdateFile); } catch (Exception ex) { Logger.Write("Download Fehlgeschlagen - Grund: " + ex.Message); if (OSystem.IsAvailableNetworkActive()) { } } if (Tools.CheckFileMd5(UpdateFile, _serverHash)) { break; } DialogResult result = MetroMessageBox.Show(this, "Möchten Sie es erneut versuchen?", "Download Fehlgeschlagen", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (result == DialogResult.No) { break; } } }