2013-10-16 1 views
0

파일을 감지하는 파일 정리 소프트웨어를 개발하여 특정 폴더에 도착한 파일을 특정 폴더 (예 : .txt 파일이 텍스트 문서 폴더로 이동)에 복사합니다. 나는 FileSystemWatcher을 사용하고 있습니다.파일 또는 폴더 복사 완료 상태 가져 오기

탐지 파일입니다. 따라서 파일 또는 폴더 복사 작업 (파일 또는 폴더 수동 복사)이 C# 코드에 의해 완료되었는지 여부를 알고 싶습니다.

단일 파일 프로그램은 정상입니다. 하지만 여러 파일에 대한 프로그램을 개선해야합니다.

이 루프를 사용하여 파일이 릴리스인지 여부를 확인했지만 큰 파일의 경우 프로그램이 응답하지 않습니다.

void File_move(string source,string destination) 
     { 
      EE: 
       try 
       { 
        File.Move(source, destination); 
       } 
       catch (Exception ex) 
       { 
        lblStatus.Text = "Waiting for file copping complete"; 
        Application.DoEvents(); 
        goto EE; 
       } 

     } 
+1

현재 실행중인 작업 상태를 가져올 수 없습니다. 그러나 FileSystemWatcher는 파일이 생성 될 때 "Created"이벤트 또는 뭔가를 발생시켜야합니다. 문제는 복사가 시작되고 실행될 때 생성되는 것입니다. 이게 네가 말하는거야? –

+0

맞습니다. 복사가 시작되었을 때 만들어졌습니다 ... 나는 굉장히 많이 봤습니다. 나는 대답이있을 것이라고 생각하지 않는다. 답장을 보내 주셔서 감사합니다. –

+0

FileSizeChanged 이벤트 또는 그와 유사한 내용 (또는 최종 액세스 날짜, 계속 복사가 시작될 때 한 번 설정 되었음)을 계속들을 수 있습니다. 그러나 복사가 중단되었을 때 (어쩌면 FileSizeChanged 이벤트가 없을 때) 알아야 할 것입니다. –

답변

0

오랜 시간이 지난 후에 나는 내 자신의 질문에 대한 해결책을 찾았습니다. 다음은이 샘플 코드에서 모두 C#에서 가져 오기 파일 복사 진행 상황에 대한 링크 및 vb.net

http://pinvoke.net/default.aspx/kernel32/CopyFileEx.html

private CopyProgressResult CopyProgressHandler(long total, long transferred, long streamSize, long StreamByteTrans, uint dwStreamNumber,CopyProgressCallbackReason reason, IntPtr hSourceFile, IntPtr hDestinationFile, IntPtr lpData) 
    { 
     Progressbar.Max=Convert.ToInt32(total); 
     Progressbar.Value=Convert.ToInt32(transferred); 
     Application.Doevents(); 
     return CopyProgressResult.PROGRESS_CONTINUE; 
    } 

긴 총 총 준다 우리가 파일을 자백 하셨나의 진행을 얻을 수있다 크기 및 긴 전송 현재 진행률을 표시합니다.