Helpmij.nl
Helpmij.nl
Helpmij.nl
Steun Helpmij.nl! Klik hier     Computerprobleem? Klik hier!

Quote

Weergeven resultaten 1 tot 3 van 3

Onderwerp: C# Downloaden van meedere bestanden

  • Vraag is niet opgelost
  1. #1

    C# Downloaden van meedere bestanden

    Hey mensen, ik had een vraagje..

    Ik zal van te voren zeggen dat ik wel iets verstand heb van programmeren, maar ik ben geen ster. Het zit dus zo. Ik speel een game, ArmA II en daar heb je een zombie mod. Je moet daar dus een paar bestanden voor downloaden om de mod te spelen. Iemand had dus een automatische updater gemaakt, maar die werkt niet helemaal. Dus ik dacht ik probeer ook iets te maken.

    Bij het opstarten van het programma haal ik de logische drives op. (C:\, D:\ etc..) Dit doe ik omdat ik heb pad wil hebben waar de installatie van het spel staat, dit heb je nodig om de mod te installeren. Dit werkt perfect. Dan vul ik een combobox met de logische drives. Zodra iemand dus zijn schijf klikt, het maakt niet uit welke, krijg je een melding of het wel of niet goed is. Zodra je de goede drive hebt gekozen zegt het programma dat je hem hebt gevonden. Om te beginnen heb ik een knop gemaakt voor de mensen die de mod nog niet hebben geinstalleerd.

    Als je dan op de knop 'Install DayZ mod' drukt kijkt hij of de mappen al bestaan die aan moet worden gemaakt, als dit niet het geval is gaat hij deze automatisch aanmaken. Dit lukt ook. Maar het probleem zit hem nu in het downloaden van bestanden. Ik heb dus een website waar de mods op staan: http://cdn.armafiles.info/

    Ik moet de .rar bestanden dus van deze website hebben en deze moeten in de map worden geplaatst die ik had aangemaakt. Het is mij gelukt om 1 bestand te downloaden, maar dit komt alleen doordat ik de orginele naam gebruik van het bestand. Dus zodra er een update komt van de mod, kan hij deze niet meer downloaden.

    Heeft iemand verstand om meerdere bestanden van een website te halen (http://cdn.armafiles.info/) en deze dan in de map te plaatsen. De bestanden moeten eigenlijk ook uitgepakt te worden, maar dat is nog niet nodig. Ik wil graag eerst het downloaden voor elkaar hebben. Ik zal hieronder neerzetten wat ik zo'n beetje heb.

    Met het automatisch downloaden krijg ik niets voor, het is ook geen opdrachten Ik wil het puur maken omdat ik er eigenlijk zin in had

    Als er vragen zijn, hoor ik het graag code.txtDayZUpdater.zip

  2. #2
    Giga Senior
    Geregistreerd
    6 juli 2010
    Locatie
    Eindhoven
    Afstand tot server
    ±91 km
    High level ideen waar je naar kunt kijken:

    1) als het goed is staat de installatie locatie van het spel in de registry. Het zou dus niet nodig hoeven zijn om de gebruiker handmatig te laten zoeken (hoewel het natuurlijk altijd een optie kan zijn

    2) maak een bestand aan met XML of gewoon text op de site met de juiste namen om te downloaden. Download eerst dat bestand en download vervolgens de file uit dat bestand.

    Als 2) niet kan is het afhankelijk van de site. Als je geen listing kan maken van de files is het eenvoudigweg niet mogelijk. Mocht de site FTP ondersteunen kan het bijvoorbeeld met FTP.
    "Ik geloof niet in een limiet van mijn kunnen,
    wel van mijn kennis"

  3. #3
    Junior Member xKirk32's avatar
    Geregistreerd
    26 juli 2012
    Locatie
    Ede
    Afstand tot server
    ±97 km
    Importeer eerst de volgende namespaces:

    Code:
    using System.Net;
    using System.IO;
    using System.Threading;
    Om te voorkomen dat het programma vast loopt tijdens het downloaden, doen we het downloaden in een aparte thread. (System.Threading).
    Plaats bijvoorbeeld deze code op een button:

    Code:
    Thread MyThread = new Thread(DownloadBestanden);
    CheckForIllegalCrossThreadCalls = false;
    MyThread.Start()
    Deze code zal de functie 'DownloadBestanden' aanroepen in een aparte thread:

    Code:
    public void DownloadBestanden()
    {
                string[] Urls = 
                { 
                    "URL", 
                    "URL",
                    "URL"
                };
                foreach (string Url in Urls)
                {
                    WebClient WClient = new WebClient();
                    WClient.DownloadFile(Url, "C:\\lol.zip");
                }
    
    }
    Note: Houd er wel rekening mee dat door 'CheckForIllegalCrossThreadCalls' op 'false' te zetten. Je gewoon objecten die in een andere thread zijn aangemaakt kunt aanroepen.
    Dit is 'unsafe threading' en eigenlijk 'slechte' code. Mijn voorbeeld code roept geen objecten aan die in een andere thread zijn aangemaakt.
    Laatst aangepast door xKirk32 : 26 juli 2012 om 11:27
    Met Vriendelijke Groet,
    xKirk32

Berichtenregels

  • U mag geen nieuwe discussies starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • Umag niet uw berichten bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl en business

Partners
Sponsoren
Linkpartners
Aanbiedingen