저는 웹 설치 프로그램을 작업 중이며 현재 제가 가지고있는 것 중 하나는
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 파일에 액세스 할 수 없습니다.
전체 코드 실행
다운로드-> 추출-> 이동-> 정리.
어떤 프로세스가 사용되고 있는지 잘 모르겠지만 각 프로세스가 시작하기 전에 이전 프로세스가 완료 될 때까지 기다리는 방법을 찾고 있습니다.
아래 추출 코드에 따르면
void Extract()
{
string zipPath = @"Repack.zip";
string extractPath = @".";
try
{
using (ZipFile unzip = ZipFile.Read(zipPath))
{
unzip.ExtractAll(extractPath);
lbldlstatus.Text = "Extracting Files";
MoveFiles();
}
}
catch (ZipException e)
{
MessageBox.Show(e.ToString());
lbldlstatus.Text = "Repack Installation Failed";
}
}
zip 파일로 완료하기 전에 이동 파일을 호출합니다. 파일 이동 메소드가 정리 기능을 호출하는 것이 담당하므로 zip 파일을 삭제하기 전에 이미 폐기되었는지 확인해야합니다.
void Extract()
{
string zipPath = @"Repack.zip";
string extractPath = @".";
try
{
using (ZipFile unzip = ZipFile.Read(zipPath))
{
unzip.ExtractAll(extractPath);
lbldlstatus.Text = "Extracting Files";
}
MoveFiles();
}
catch (ZipException e)
{
MessageBox.Show(e.ToString());
lbldlstatus.Text = "Repack Installation Failed";
}
}
모든 항목을 이동 한 후에도 정리를 호출해야합니다. 현재 예제 코드는 for 루프에서 반복적으로 호출합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다