나는 최근에 당신이 묘사하고있는 것과 거의 비슷한 것을 만들었습니다. 처음에는 FileSystemWatcher를 사용해야한다고 생각했습니다. 문제는 그것이 일어 났을 때 나에게 사물에 대해서만 알려주는 것입니다. 어떤 이유로 든 서비스가 중단 된 후 다시 시작해야하는 경우 서비스가 시작될 때 서비스가 중단 된 동안 생성 된 파일과 관련된 이벤트가 발생하지 않았습니다.
그래서 서비스 시작시 파일을 확인한 다음 FileSystemWatcher를 사용하는 폴러를 작성하는 것을 보았습니다. 나는 어쨌든 FileSystemWatcher를 사용하는 것이 왜 두려운가를 생각하기 시작했다. 그래서 나는 완전히 그것을 떨어 뜨 렸습니다. 그리고 단지 어플리케이션이 폴러가 신생 기업에서 반복적으로했던 것을 할 필요가 있기 때문에 내 폴러가 모든 것을 할 수있게했습니다.
내 응용 프로그램은 Windows 서비스입니다. OnStart는 폴링을 수행하는 함수를 실행하는 스레드를 만듭니다. 이 기능은 OnStop에 의해 트리거 된 종료 조건의 잠시 루프이며 잠깐 폴링하고 디렉토리를 검색합니다. 그것이 무언가를 찾으면 그것을 처리하고, 그렇지 않으면 1 분 동안 잔다. 아주 간단합니다. 이 코드는 기본적이고 유지하기 쉽습니다. 나는 몇 년 동안 문제없이 실행 된 응용 프로그램에서 사용했습니다,
protected override void OnStart(string[] args)
{
WriteToLog("Starting...");
bThreadRun_m = true;
tMain_m = new Thread(new ThreadStart(RunThread));
tMain_m.Name = "Main Thread";
tMain_m.Start();
WriteToLog("Start Complete");
}
가 정교하게하십시오 : 여기
내 ONSTART의 샘플입니다. 그것은 여기저기서 파일을 놓친다면별로 중요하지 않을 것입니다. 그래서 아마도 나는 그것을 놓쳤습니다. 그리고 그들은 시스템 자원도 –에 의해 정교하게 :) –
그래, idk ... 내가 파일을 가진 디렉토리를 폭파했다면 나는 폴링이나 MSMQ로 이동 같은 것을 고려할 수 있습니다. 그러나 매시간 또는 그 시간에 파일이 있습니다 ... 그것은 내 경험에 광고 된대로 작동합니다. 위로 주셔서 감사합니다 –