Laden...

Background Worker Download Fehler

Erstellt von andelwol26 vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.060 Views
A
andelwol26 Themenstarter:in
1 Beiträge seit 2018
vor 5 Jahren
Background Worker Download Fehler

Hallo zusammen,

ich bin momentan am Basteln von einem Auto Updater für ein Spiel.
Dieser Soll:
Eine Manifest datei mit dem Spiel abgleichen und fehlerhafte oder fehlende Daten herunterladen. Danach soll alles nochmal geprüft werden.

Das funktioniert bereits sehr gut. Bis auf eine Sache.
Bei der letzten Datei fängt er sofort das verifizieren an und ich bekomme somit einen Fehler, das die datei bereits geöffnet ist.

Deshalb habe ich folgenden Bereich geändert bekomme aber nun einen neuen Fehler:

Fehlermeldung:
for (int i = 0; i ≤ downloadList.Count;)

Bild entfernt - Coffeebean

Ich suche jetzt seit bestimmt 3 Wochen finde aber den Fehler nicht...
Hat jemand evtl. eine Idee wie ich das Problem lösen könnte?

Code:



        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            // no GUI method !
            for (int i = 0; i < downloadList.Count;)
            {
                // handle closing form during download
                if (Worker.CancellationPending)
                {
                    MainView = null;
                    _wc.CancelAsync();
                    e.Cancel = true;
                }
                else
                {
                    if (downloadInProgress == false)
                    {
                        downloadInProgress = true;
                        string path = System.IO.Path.GetFullPath("./");
                        string fileToDownloadPath = NetworkThing.Info.getDownloadUrl() + downloadList[i];
                        string SaveFileToPath = path + downloadList[i];
                        if (isFileExist(SaveFileToPath) == true)
                            System.IO.File.Delete(SaveFileToPath); // remove file if extist
                        else
                            // create directory where the file will be created (use api this don't do anything on existing directory)
                            System.IO.Directory.CreateDirectory(Path.GetDirectoryName(SaveFileToPath));
                        startDownload(fileToDownloadPath, SaveFileToPath);
                        currentFile = i;
                        currentFileString = Path.GetFileName(downloadList[i]);
                        i++;
                        int downloadProgress = (i * 100 / downloadList.Count);
                        Worker.ReportProgress(downloadProgress);
                    }
                }
            }
        }


4.942 Beiträge seit 2008
vor 5 Jahren

Hallo und willkommen,

deine Änderung (≤) ist auf jeden Fall falsch, denn die Indizes einer Liste (oder Array) gehen nur von 0 bis Count-1.

Welcher Code 'verifiziert' denn die Daten? Also in welcher Verbindung steht dieser zu dem BackgroundWorker?
Ich denke, du müßtest _downloadInProgress _ wieder nach der Schleife auf false zurücksetzen und danach dann die Verifizierung durchführen.

PS: Auch bei Pfadoperationen solltest du die Path-Klasse benutzen, insbesondere Path.Combine(...).

16.842 Beiträge seit 2008
vor 5 Jahren

Bitte beachte [Hinweis] Wie poste ich richtig?
Du hast die Regeln erst vor wenigen Minuten zwei Mal als gelesen und akzeptiert markiert! Du erwartest hier Hilfe, wir, dass die Leute sich an die Gemeinschaftsregeln halten 😉

* 6. Code-Tags und Anhänge verwenden
* 6.1 Bilder als Dateianhang hochladen

Bitte entferne das externe Bild und verwende die Code Tags.
Danke.