이전 기능이 완료 될 때까지 기다립니다.

모건 그린

저는 웹 설치 프로그램을 작업 중이며 현재 제가 가지고있는 것 중 하나는

    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 파일에 액세스 할 수 없습니다.

전체 코드 실행

다운로드-> 추출-> 이동-> 정리.

어떤 프로세스가 사용되고 있는지 잘 모르겠지만 각 프로세스가 시작하기 전에 이전 프로세스가 완료 될 때까지 기다리는 방법을 찾고 있습니다.

Nkosi

아래 추출 코드에 따르면

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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

서비스 기능이 완료 될 때까지 기다립니다.

분류에서Dev

요청이 완료 될 때까지 기다립니다.

분류에서Dev

Dart : 템플릿이 완료 될 때까지 기다립니다.

분류에서Dev

zsh는 작업이 완료 될 때까지 기다립니다.

분류에서Dev

NodeJS-콜백이 완료 될 때까지 기다립니다.

분류에서Dev

두 관찰 가능 항목이 완료 될 때까지 기다립니다.

분류에서Dev

각도기-이전 블록이 다음 전에 완료 될 때까지 기다립니다.

분류에서Dev

Swift, 반환 목록 전에 두 개의 완료 블록이 완료 될 때까지 기다립니다.

분류에서Dev

다른 기능을 실행하기 전에 비동기 기능이 종료 될 때까지 기다립니다.

분류에서Dev

foreach 루프는 각 단계의 각 기능이 완료 될 때까지 기다립니다.

분류에서Dev

Puppeteer는 Cloudfare 리디렉션이 완료 될 때까지 기다립니다.

분류에서Dev

Angular / RXJS-AJAX 요청이 완료 될 때까지 기다립니다.

분류에서Dev

jQuery 모바일 : $ .getJSON이 완료 될 때까지 기다립니다.

분류에서Dev

이벤트가 완료 될 때까지 기다립니다 (스레딩).

분류에서Dev

Javascript / AngularJS-콜백 실행이 완료 될 때까지 기다립니다.

분류에서Dev

jQuery에서 함수 호출이 완료 될 때까지 기다립니다.

분류에서Dev

Koa.js는 실행이 완료 될 때까지 기다립니다.

분류에서Dev

모든 관찰 가능 항목이 완료 될 때까지 기다립니다 (순서 + 상위 하위 관계).

분류에서Dev

객체를 반환하기 전에 모든 콜백이 완료 될 때까지 기다립니다.

분류에서Dev

값을 반환하기 전에 네트워크 호출이 완료 될 때까지 기다립니다.

분류에서Dev

새로운 기능을 시작하기 전에 Ajax 기능이 완료 될 때까지 기다리십시오.

분류에서Dev

기능이 플러터에서 완료 될 때까지 기다리는 방법?

분류에서Dev

기능이 완료 될 때까지 어떻게 기다리나요?

분류에서Dev

QtConcurrent는 앱이 종료 되려고 할 때 완료 될 때까지 기다립니다.

분류에서Dev

전환이 완료 될 때까지 css 변환 대기

분류에서Dev

Flutter는 Firestore가 완료 될 때까지 기다립니다.

분류에서Dev

Cypress each () 함수가 완료 될 때까지 기다립니다.

분류에서Dev

UI 스레드가 완료 될 때까지 기다립니다.

분류에서Dev

리소스가 완료 될 때까지 기다립니다.

Related 관련 기사

  1. 1

    서비스 기능이 완료 될 때까지 기다립니다.

  2. 2

    요청이 완료 될 때까지 기다립니다.

  3. 3

    Dart : 템플릿이 완료 될 때까지 기다립니다.

  4. 4

    zsh는 작업이 완료 될 때까지 기다립니다.

  5. 5

    NodeJS-콜백이 완료 될 때까지 기다립니다.

  6. 6

    두 관찰 가능 항목이 완료 될 때까지 기다립니다.

  7. 7

    각도기-이전 블록이 다음 전에 완료 될 때까지 기다립니다.

  8. 8

    Swift, 반환 목록 전에 두 개의 완료 블록이 완료 될 때까지 기다립니다.

  9. 9

    다른 기능을 실행하기 전에 비동기 기능이 종료 될 때까지 기다립니다.

  10. 10

    foreach 루프는 각 단계의 각 기능이 완료 될 때까지 기다립니다.

  11. 11

    Puppeteer는 Cloudfare 리디렉션이 완료 될 때까지 기다립니다.

  12. 12

    Angular / RXJS-AJAX 요청이 완료 될 때까지 기다립니다.

  13. 13

    jQuery 모바일 : $ .getJSON이 완료 될 때까지 기다립니다.

  14. 14

    이벤트가 완료 될 때까지 기다립니다 (스레딩).

  15. 15

    Javascript / AngularJS-콜백 실행이 완료 될 때까지 기다립니다.

  16. 16

    jQuery에서 함수 호출이 완료 될 때까지 기다립니다.

  17. 17

    Koa.js는 실행이 완료 될 때까지 기다립니다.

  18. 18

    모든 관찰 가능 항목이 완료 될 때까지 기다립니다 (순서 + 상위 하위 관계).

  19. 19

    객체를 반환하기 전에 모든 콜백이 완료 될 때까지 기다립니다.

  20. 20

    값을 반환하기 전에 네트워크 호출이 완료 될 때까지 기다립니다.

  21. 21

    새로운 기능을 시작하기 전에 Ajax 기능이 완료 될 때까지 기다리십시오.

  22. 22

    기능이 플러터에서 완료 될 때까지 기다리는 방법?

  23. 23

    기능이 완료 될 때까지 어떻게 기다리나요?

  24. 24

    QtConcurrent는 앱이 종료 되려고 할 때 완료 될 때까지 기다립니다.

  25. 25

    전환이 완료 될 때까지 css 변환 대기

  26. 26

    Flutter는 Firestore가 완료 될 때까지 기다립니다.

  27. 27

    Cypress each () 함수가 완료 될 때까지 기다립니다.

  28. 28

    UI 스레드가 완료 될 때까지 기다립니다.

  29. 29

    리소스가 완료 될 때까지 기다립니다.

뜨겁다태그

보관