Problém s downloadem – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problém s downloadem – .NET – Fórum – Programujte.comProblém s downloadem – .NET – Fórum – Programujte.com

 

Mutagen0
Super člen
27. 5. 2012   #1
-
0
-

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;
		    ....
		    ....
		}
	}
Nahlásit jako SPAM
IP: 88.103.221.–
liborb
~ Redaktor
+18
Guru
28. 5. 2012   #2
-
0
-

Pokud se ti to opakovaně stáhne špatně, tak to nejspíše tahá z cache, ne?

Nahlásit jako SPAM
IP: 78.80.52.–
Mutagen0
Super člen
28. 5. 2012   #3
-
0
-

#2 liborb
Právě, že ono to ani víckrát nestáhne pokud to stáhne špatně. Prostě se to sekne na někde, dejme tomu na 600mb a když to sčekne hash tak by se pri špatným hashi měl download spustit znova -> ale místo toho se nespustí stahovani ale zase hnedka začne Checkovat Hash ... tak nevím zda to je z cache nebo ne ... Nevím prostě.

Přikládám obrázek

Nahlásit jako SPAM
IP: 88.103.221.–
liborb
~ Redaktor
+18
Guru
28. 5. 2012   #4
-
0
-

Možná tu někdo takový problém řešil. Mě to jenom připomnělo situaci ve starém IE, kde při zkolabování stahování další pokus o stahování došel opět jen do tohoto místa. A mám takový pocit, že stačilo smazat cache (nebo vyměnit prohlížeč za tenkráte ještě Netscape :)).

Další věc, kterou můžeš udělat, je zavolat přerušení async operací (CancelAsync). Nebo vyměň "prohlížeč" :) a použij jiný způsob - třeba HttpRequest - pokud to jde.

No a pokud to umíš vyvolat, tak bych se Wiresharkem kouknul, jak to vypadá při a po přerušení stahování.

Nahlásit jako SPAM
IP: 78.80.52.–
Mutagen0
Super člen
28. 5. 2012   #5
-
0
-

#4 liborb
No já jen, jestli náhodou to není třeba eventem nebo tak, že je pořád puštěnej. Nevím, Já jsem teďka na docela pomalým internetu tak to nemůžu nijak zkusit, ale nikdy mě stahování nedošlo až do konce ... A vždycky ta chyba místo toho aby se to stahovalo znova tak se hnedka kontroloval hash... Nevím třeba by to vymazání cache mohlo fungovat. A hlavne jak stahovat přes HttpRequest nevím ... A gord ne asynchroně ...

Nahlásit jako SPAM
IP: 88.103.221.–
liborb
~ Redaktor
+18
Guru
28. 5. 2012   #6
-
0
-

Jestli ten kód může být takto ti samozřejmě neřeknu, protože nemám tu zkušenost a nemůžu si to zkusit. Nehledě na to, že si psal, že ti to i funguje ... 

Nahlásit jako SPAM
IP: 78.80.52.–
Mutagen0
Super člen
28. 5. 2012   #7
-
0
-

Jako funguje to když to všechno stáhne Ale jakmile to nestáhne tak to pak zacne delat bordel ... Tak třeba jestli neni porblem nekde v eventach že se jich pak spusti moc nebo tak ... Nevím prostě ...Jako kodove to je dobre ale nekde je zakopanej pes kterej mi to zpetne nestáhne a jenom kotroluje pak hash souboru ...

Nahlásit jako SPAM
IP: 88.103.221.–
liborb
~ Redaktor
+18
Guru
28. 5. 2012   #8
-
0
-

V tom by to mohlo být, protože už vlastně nikdy neskočíš, takže pro něj to může být stále otevřené. Tak si třeba zkus místo znovuspuštění dát timer na 10s a znovu spouštět stahování až v reakci na ten timer.

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.217.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 25 hostů

Podobná vlákna

Problém v C — založil Robin

Problem — založil Ghosta

Problém — založil Ma.ty

Problém — založil pali6

Problem — založil roonill

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý