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);
}
}
}
}
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(...).
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.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code