2011-08-16 4 views
0

Windows 서비스에서 mplayer 및 filewatcher를 사용하여 스냅 샷을 만들려고합니다. 서비스를 만들었고 명령 줄 플레이어를 스냅 샷으로 만들 수 있었지만 문제가 생겼습니다. 한 번에 실행되고 입출력을 범람시키는 mplayer 프로세스가 없도록 여러 종류의 대기열을 생성해야합니다. 나는 끌어 오기 SynchronizedCollection을 만들려고 시도했지만 파일이 대기열에 있는지 확인하고 스냅 샷을 생성하기 위해 새 스레드를 생성 하는지를 확인하는 제어 프로세스를 어디에서 시작해야하는지 이해하는 데 문제가 있습니다.Windows 서비스에서 Filewatcher를 사용하여 명령 줄 프로세스 제어

답변

0

이전에 비슷한 것을 구현해야했는데, 여기에 내가 한 일이 있습니다. 여기에 기본 코드 샘플이 있습니다. 전체 클래스 Here을 찾을 수 있습니다. 여기

당신은 대기열이 필요합니다, 당신은해야 할 일의 기초, 당신이 당신의 큐를 저장하기 위해 모든 목록 데이터 구조를 선택적으로 사용할 수 있습니다,이 큐에 새 항목을 추가 할 파일 감시자가 필요합니다.

대기열을 처리하는 다른 방법이 필요합니다. 또한 파일 감시자 의지가 이미 실행 아니에요 경우 ProcessQeueue()을 유발하는지 확인하기 위해서는 그 알아낼 수있을만큼 간단합니다 필요

private void ProcessQueue() 
    { 
     do 
     { 
       try 
       { 
        Itme job = null; 

        lock (Queue) 
        { 
         if (Queue.Count != 0) 
         { 
          job = Queue.First(); 
          Queue.Remove(job); 
         } 
        } 

        if (job != null) 
        { 
         Execute(job); 
        } 

       } 
       catch (Exception e) 
       { 
        Logger.FatalException("An error has occurred while processing queued job.", e); 
       } 


     } while (Queue.Count != 0); 

     Logger.Trace("Finished processing jobs in the queue."); 

     return; 
    } 

(큐가 비워 질 때까지이 큐에 항목을 처리합니다) 설정 한 플래그 변수를 사용하거나 프로세스 인스턴스가있는 경우 프로세스 인스턴스의 상태를 점검 할 수 있습니다.

관련 문제