我工作的一個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
當我回到我的電腦時,我會拋出我的下載,解壓縮並在閱讀後移至粘貼文件夾中,如果這不是問題。謝謝你們 –