2016-06-05 5 views
0

서비스로 실행되는 .net 서버 응용 프로그램에서 디렉토리를 모니터하려는 경우, 스캔 간격이 서버에 대해 "un healty"라고 할 때가 언제입니까?디렉토리를 1 초마다 검색합니다.

서버가 제대로 처리 할 수 ​​있다면이 디렉터리를 1 초마다 검색하고 싶습니다.

파일 시스템 감시자를 사용하는 것은 선택할 수 없습니다.

귀하의 경험에 감사드립니다.

업데이트 : 검색되는 디렉토리에는 하위 디렉토리가 없습니다. 파일 크기는 약 5kb ~ 500kb가 될 것으로 예상됩니다.

내 응용 프로그램이 새 데이터를 가져올 준비가되면 디렉토리를 폴링하고 싶습니다. 따라서이 경우 파일 시스템 감시자가 적합하지 않다고 생각합니다. 옵션은 물론 FSW가 "보류 목록"에서 트리거하는 파일에 대한 정보를 저장하는 것입니다.

+1

자세한 정보가 필요합니다. 디렉토리/하위 디렉토리의 크기, '스캔'관련 내용 및 옵션이 아닌 작업을 위해 설계된 파일 시스템 감시자 유틸리티가있는 이유는 무엇입니까? – MicroVirus

+1

또한 FileSystemWatcher 클래스 사용을 고려하십시오. 다시, 디렉토리 크기에 따라, –

답변

1

System.Timers.Timer을 사용하면이 작업을 수행 할 수 있습니다. 밀리 초를 허용 할 때 간격을 1000으로 설정하고 AutoReset 속성을 true으로 설정하십시오. 아마 스캔 중에 타이머를 사용하지 않는 것이 적절합니다. 따라서 스캔이 1 초보다 오래 걸리면 다른 스레드 풀 스레드에서 다시 시작되지 않습니다.

partial class AService : ServiceBase 
{ 
    Timer CountDown = new Timer(1000); 

    void CountDown_Elapsed(object sender, ElapsedEventArgs e) 
    { 
     CountDown.Enabled = false; 
     ScanFolder("C:\\Temp"); 
     CountDown.Enabled = true; 
    } 

    void ScanFolder(string FolderPath) 
    { 
     var files = Directory.EnumerateFiles(FolderPath); 
     // Manipulate files ... 
    } 

    public AService() 
    { 
     InitializeComponent(); 
    } 

    protected override void OnStart(string[] args) 
    { 
     CountDown.Elapsed += CountDown_Elapsed; 
     CountDown.AutoReset = true; 
     CountDown.Enabled = true; 
    } 

    protected override void OnStop() 
    { 
     CountDown.Stop(); 
     CountDown.Dispose(); 
    } 
} 
+0

나는 낮은 간격으로 스캔 할 때 스캔이 서버에 어떤 부정적인 영향을 주는지 (OS와 하드웨어 모두에 대해 추측합니다) 더 많은 점을 생각하고있었습니다. – Qualle

+0

아, 알겠습니다. 음, 이것은 확실히 시험을 결정할 것을 요구합니다. 하지만 나는 OS와 하드웨어 모두 심각한 과열을 기대하지는 않습니다. 디렉토리를 나열하는 것은 큰 것이 아닌 MFT 구조를 참조하는 문제입니다. 그렇더라도 이러한 데이터를 캐시하는 OS 메커니즘이 있으므로 자주 발생하면 디스크를 전혀 신경 쓸 필요가 없습니다. 그냥 기억. –

+0

입력 해 주셔서 감사합니다. Bozhidar :) – Qualle

관련 문제