Download, auf die Datei kann nicht zugegriffen werden? Aber nur bei Ausführung in extra Klasse

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Trade.

    Download, auf die Datei kann nicht zugegriffen werden? Aber nur bei Ausführung in extra Klasse

    Hallo Leute,

    folgendes Problem.
    Ich möchte dass mehrere Dateien heruntergeladen werden. Nun passiert das auch wie gewünscht, wenn ich das ganze im "MainWindow" mache.
    Doch wenn ich die Funktion in meine .dll packe und das ganze versuche meint er, dass er auf die Datei nicht zugreifen kann... Habe aber den Stream des StreamReaders geschlossen...

    Bestimmt überseh ich irgendwas:


    Meine .dll

    C#-Quellcode

    1. private static void updateworker()
    2. {
    3. try
    4. {
    5. string file = Directory.GetCurrentDirectory() + "/version.txt";
    6. string latestversion;
    7. //öffnet die version.txt
    8. using (StreamReader Reader = new StreamReader(file))
    9. {
    10. latestversion = Reader.ReadLine();
    11. //liest die zu updatenden dateien aus
    12. while (!Reader.EndOfStream)
    13. {
    14. //MessageBox.Show(Reader.ReadLine());
    15. updateworkerdownload(Reader.ReadLine());
    16. }
    17. Reader.Close();
    18. }
    19. }
    20. catch (Exception f)
    21. {
    22. MessageBox.Show(f.ToString());
    23. }
    24. }
    25. private static void updateworkerdownload(string filename)
    26. {
    27. string url = "http://www.***********";
    28. string myStringWebResource = null;
    29. WebClient wcdl = new WebClient();
    30. Uri urluri = new Uri(url + filename);
    31. wcdl.Headers.Add("User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)");
    32. wcdl.Headers.Add("Content-Type", "application / zip, application / octet - stream");
    33. wcdl.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
    34. wcdl.Headers.Add("Referer", "http://www.*********");
    35. wcdl.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
    36. myStringWebResource = url + filename;
    37. wcdl.DownloadFileCompleted += Wcl_DownloadFileCompleted;
    38. wcdl.DownloadProgressChanged += Wcl_DownloadProgressChanged;
    39. sw.Start();
    40. //wcl.DownloadFile(myStringWebResource,filename);
    41. try
    42. {
    43. wcdl.DownloadFileAsync(urluri, filename);
    44. }
    45. catch (Exception)
    46. {
    47. //MessageBox.Show(f.ToString());
    48. }
    49. }


    Wenn ich das nun im Hauptfenster ausführe klappt es einwandfrei...

    Danke im voraus für eure Hilfe
    DaNeubi
    Hi @DaNeubi,

    entschuldige, aber iwie verstehe ich nicht recht was ich meine: Du versuchst ein Problem zu lösen, das bereits gelöst ist bzw. das Problem hast du selber verursacht. Dann führ doch einfach weiterhin im ​MainWindow aus...

    Grüße, ExteNesia.de
    Hey @ExteNesia.de,

    ich brauche diese Funktion aber leider auch noch für ein anderes Fenster.
    Und deshalb ist eine zentrale .dll für alle Netzwerkfunktionen am besten.

    Grüße DaNeuibi
    Sagen wir mal, bisher sind es nur zwei Fenster. Geplant ist diese Funktion für insgesamt 7 Fenster. Deshalb auch die Verlagerung in die .dll

    @KenaexJa richtig Updater.Ich habe jemanden der mir das verschlüsseln beibringt. Nur das drum herum soll ich mir selbst erarbeiten.Meinen bisherigen Verschlüsselungsalgorithmus habe ich auf einem Asymmetrischem Verfahren aufgebaut, keine Sorge.

    DaNeubi schrieb:

    Ich habe jemanden der mir das verschlüsseln beibringt.
    Dann sehe ich die Sicherheit da etwas in Gefahr, wenn Du das verschlüsseln willst...

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Trade schrieb:

    Dann sehe ich die Sicherheit da etwas in Gefahr, wenn Du das verschlüsseln willst...

    Wieso siehst du da die Sicherheit in Gefahr? Kennst du meinen Bekannten also besser als ich?
    Nö, aber ich weiß, wie das Verfahren funktioniert. Und Validierung von Echtheit funktioniert nun mal mit Signierung, wie Kenaex zitiert hat. ;)
    Verschlüsselung != Signierung.

    Du solltest in jedem Fall auch so nochmal jemanden drüberschauen lassen. Nicht, weil ich Deinen Bekannten anzweifle, aber man kann schon mal schnell eine kleine Lücke einbauen.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: