ich auf einem Web-Installer gerade arbeite und eines der Dinge, die ich zur Zeit habe, istfür frühere Funktion abzuschließen
void MoveFiles()
{
lbldlstatus.Text = "Moving Files";
string InstallDirectory = Directory.GetCurrentDirectory() + "/DoxramosRepack-master";
DirectoryInfo d = new DirectoryInfo(InstallDirectory);
foreach(var file in d.GetFiles("*"))
{
try
{
if (File.Exists(file.Name)) {
File.Delete(file.Name);
}
Directory.Move(file.FullName, file.Name);
Cleanup();
}
catch(Exception e)
{
MessageBox.Show(e.ToString());
lbldlstatus.Text = "Repack Installation Failed";
}
}
}
void Cleanup()
{
lbldlstatus.Text = "Cleaning Up Files";
try
{
if (File.Exists("Repack.zip"))
{
File.Delete("Repack.zip");
}
if(Directory.Exists("DoxramosRepack-master"))
{
Directory.Delete("DoxramosRepack-master");
}
lbldlstatus.Text = "Repack Installed Successfully";
}
Als ich Cleanup()
erhalte ich eine System.IO.IOException
haben.
Prozess kann nicht die Datei Repack.zip zugreifen, da sie durch einen anderen Prozess verwendet werden.
Der vollständige Code läuft
Download-> Extract-> Move-> Cleanup.
Ich bin mir nicht sicher, welcher Prozess verwendet wird, aber ich suche nach einem Weg für jeden Prozess warten auf den vorherigen zu beenden, bevor Sie beginnen.
Ich glaube nicht, dass Sie Async-Methoden überall verwenden, also wahrscheinlich schließen Sie eine Datei nicht korrekt .. –
Der Code zu extrahieren ist wahrscheinlich nicht geschlossen oder entsorgt richtig, wenn Sie versuchen, die ZIP-Datei zu löschen wird noch benutzt. Da der Extraktcode nicht angezeigt wird, kann nicht bestätigt werden, wenn dies der Fall ist. – Nkosi
Wenn ich zurück zu meinem PC komme, werde ich meinen Download werfen, extrahieren und weitermachen, nachdem ich in dispose gelesen habe, wenn das nicht das Problem ist. Danke Jungs –