Új hozzászólás Aktív témák

  • togvau

    senior tag

    Addott ez a kód:

    HashSet<string[]> fileset = checkFiles(mainhashlink, destination);
    foreach ( ChoiceBean emt in Installer.MainWindow.thiswindow.choice.SelectedItems)
    {
    fileset.UnionWith(checkFiles(emt.url, destination));
    }
    if (DEBUG) Console.WriteLine("fileset count: " + fileset.Count);
    foreach (string[] file in fileset)
    {
    if (DEBUG) System.Console.WriteLine("file: " + file[0]);
    string downfileeee= downloadZip(file[0]);
    Task.Factory.StartNew(() => UnzipFromFile(downfileeee, destination, file[1]));
    }

    És itt a használt downloadZip()
    private static string downloadZip(string down)
    {
    if (DEBUG) System.Console.WriteLine("starting download: "+down);

    string tempfile = Path.GetTempFileName();
    /*var fs = new FileStream(tempfile, FileMode.Open, FileAccess.Write);
    ConvertToStream(down).CopyTo(fs);
    fs.Close();*/
    new WebClient().DownloadFile(down, tempfile);
    if (DEBUG) System.Console.WriteLine("finished download: " + down);
    return tempfile;
    }

    Ott van kikommentblokkozva milyen volt előtte (ConvertToStream egyszerűen egy HttpClient-en átmenő streamet ad vissza).

    Szóval converttostreammel (httpclient) iszonyú lassú volt, néha sok másodpercig állt néhány kbites letöltéssel, aztán 30 mbit, majd megint állás, és így tovább. Webclientre átrakva kevesebb az üresjárat, de az is malmozik sokat. Ez miért van?

    (Java alapon hasonló kód ami ugyanezeket tölti, pedig kitolja maxra a 30mbitet, folyamatosan, bár ott több szálon megy a letöltés is, nem csak a kicsomagolás, ami itt nem megy.)

Új hozzászólás Aktív témák