Zdravím, mám takový problém s Asyn. Downloadem. Jde o to, že mi to funguje v pohodě, pokud to všechno stáhne, ale jakmile se to nedostahuje a chce spustit znova (stahování stejnýho souboru) tak to vůbec nezačne znova stahovat, ale zase to hodí stejnou chybu -> Hash nesouhlasí apod ... Prostě nezačne stahovat, když se to nedostahuje ...
private void UltimaOnlineDownload()
{
if (CheckRegistryUltima())
{
AddText("Ultima Online - Ok");
IntForSwitch++;
RazorDownload();
}
else
{
AddText("Ultima Online nenalezena! Spouštím stahování.");
Download("http://www.aigon.tode.cz/UO/files/UO_SAC.exe", "UOSetup.exe", ApplicationDir);
}
}
public void Download(string URL, string Name, string Dir)
{
WebClient DownClient = new WebClient();
DownClient.DownloadFileCompleted += new System.ComponentModel.AsyncCompletedEventHandler(Down_Completed);
DownClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(Down_Changed);
DownClient.DownloadFileAsync(new Uri(URL), Dir + "\\" + Name);
}
public void Down_Changed(object sender, DownloadProgressChangedEventArgs e)
{
double BytesDownloaded = double.Parse(e.BytesReceived.ToString());
double TotalBytes = double.Parse(e.TotalBytesToReceive.ToString());
double Procenta = BytesDownloaded / TotalBytes * 100;
int INT_Procenta = (int)Procenta;
double BytesToMb = Math.Round((BytesDownloaded / 1024 / 1024), 2);
double TotalBytesToMb = Math.Round((TotalBytes / 1024 / 1024), 2);
Invoke((MethodInvoker)delegate()
{
MyProgressBar.Maximum = (int)TotalBytes;
MyProgressBar.Value = (int)BytesDownloaded;
L_Complete.Text = "Staženo : " + BytesToMb + "/" + TotalBytesToMb + " Mb";
});
}
private void Down_Completed(object sender, AsyncCompletedEventArgs e)
{
switch (IntForSwitch)
{
case 0:
if (CheckUltimaHash())
{
IntForSwitch++;
AddText("Ultima Online stažena. Spouštím instalaci.");
Process.Start(ApplicationDir + "\\UOSetup.exe");
RazorDownload();
}
else
{
AddText("Chyba! Hash nesouhlasí. Stahuji znova!");
UltimaOnlineDownload();
}
break;
....
....
}
}