我工作的一个Web安装程序和的事情,我有一个目前等待上一次函数来完成
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,因为它被另一个进程 所使用。
完整代码运行
下载 - >提取物 - > MOVE->清理。
我不确定正在使用哪个进程,但我正在寻找一种方法让每个进程在开始之前等待前一个进程完成。
我不认为你在任何地方使用异步方法,所以可能你没有正确关闭文件。 –
提取的代码可能没有被正确关闭或处理,因此当你试图删除zip文件时仍在使用中。鉴于提取代码未显示,如果确实如此,则无法确认。 – Nkosi
当我回到我的电脑时,我会抛出我的下载,解压缩并在阅读后移至粘贴文件夹中,如果这不是问题。谢谢你们 –