2011-08-18 3 views
1

웹 서비스에서 만들 임시 파일을 포함하는 폴더가 있습니다. 나는 명령 줄을 통해 가지고있는 .exe 프로그램에 의해 파일이 변환되기를 원한다. 자, 나는 하나의 특정 폴더에 파일과 저장소를 생성 할 웹 서비스를 이미 생성했다.Windows XP에서 새 파일을 검색하는 C# Windows 서비스를 만들 수 있습니까?

  1. 웹 서비스 내 모바일 앱에서 AMR 바이트 데이터를 수신 : 여기

    는 시나리오입니다.
  2. 웹 서비스는 폴더에있는 모든 파일을 삭제합니다. (.amr 파일과 이전 라운드에서 생성 된 .mp3 파일을 제거하려면)
  3. 웹 서비스는 폴더에 새 .amr 파일을 만듭니다.
  4. Windows 서비스에서 새 파일이 만들어 졌음을 감지했습니다. converter.exe를 호출합니다. 완료되면 .mp3 파일이 같은 폴더에 생성됩니다.

이제는 step1-3에 아무런 문제가 없습니다. 문제는 step4로, .amr 파일을 .mp3 파일로 변환해야합니다. 이렇게하기 위해서는 converter.exe에 dos 명령을 전달해야합니다. 웹 서비스에서이 작업을 수행하는 것이 불가능하다는 것을 알았습니다. 따라서 파일을 저장하는 폴더를 볼 C# Windows Service를 만들려고합니다. 새로운 파일 생성을 감지하고 새로운 파일이 생성되는 즉시 converter.exe를 실행할 수있는 Windows 서비스를 만들 수 있습니까? 나는 인터넷에서 검색을했는데 FileSystemWatcher를 사용하여 Windows 서비스를 만들 수 있다는 것을 알았지 만 가능한지 확실하지 않았습니다.

웹 서비스에서 converter.exe를 실행하려고 할 때 발견 된 이유는 권한에 관한 것입니다. 나는 모든 것을했지만 여전히 성공을 거둘 수는 없다. (웹 서비스를 사용하면 프로세스 관리자의 프로세스 목록에 로컬 시스템으로 표시되지만, 보안상의 이유로 인해 실행되지는 않는다.) 희망이있다. Windows 서비스를 사용하여 converter.exe를 실행하려고하면 보안 문제가 발생하지 않습니다. 트릭을 할 것입니다 모든 대답과 제안 :

답변

6

System.IO.FileSystemWatcher에 미리

감사합니다. Created 이벤트는보고있는 디렉토리에 파일이 생성 된시기를 알려줍니다. 변환 프로그램을 시작하려면 System.Diagnostics.Process.Start 메소드를 살펴보십시오. 이 두 가지 모두 Windows 서비스에서 제대로 작동해야합니다.

+0

* 예외 ... * 글쎄, 예외는 아니지만 스트림을받은 디스크를 스트림으로 덤프하는 경우 생성 된 이벤트가 발생하면 파일 작업이 실패 할만큼 지연이 발생할 수 있습니다. 아마도이 파일을 임시 파일에 덤프 한 다음 대상 폴더에 복사해야합니다. – Will

+2

임시 폴더 (동일한 실제 디스크에 있음)에 만들어야한다는 데 동의하지만 복사본이 아닌 이동을 수행해야합니다. 복사 작업에 도입 된 지연으로 인해 불완전한 처리가 시작될 수 있으므로 복사본을 이동하지 마십시오. 파일. –