Я работаю на веб-инсталлятор и одна из вещей, которые я имею в настоящее время являетсяПодождите предыдущая функция для завершения
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";
}
Когда я получаю Cleanup()
у меня есть System.IO.IOException
.
Процесс не может получить доступ к файлу Repack.zip, поскольку он используется другим процессом.
Полный код работает
Download-> Extract-> MOVE-> Cleanup.
Я не уверен, какой процесс используется, но я ищу, чтобы найти способ для каждого процесса дождаться завершения предыдущего перед запуском.
Я не думаю, что вы используете методы асинхронизации в любом месте, поэтому, вероятно, вы не закрываете файл правильно. –
Код для извлечения, вероятно, не закрывается или не утилизируется должным образом, поэтому при попытке удалить zip-файл все еще используется. Учитывая, что код извлечения не показан, он не может быть подтвержден, если это так. – Nkosi
Когда я вернусь на свой компьютер, я брошу свою загрузку, извлечение и перемещение по вставке после того, как прочитаю, если это не проблема. Спасибо, ребята –