새 파일이 모니터중인 폴더에 동시에 생성되는 경우 Created 이벤트가 동시에 x 번 또는 x 번 동시에 실행됩니까?System.IO.FileSystemWatcher의 만든 이벤트가 동 기적으로 또는 비동기 적으로 실행됩니까?
1
A
답변
3
filesystemwatcher 클래스는 내부 버퍼를 사용하여 파일 변경 사항을 저장합니다 (오버플로로 인해 이벤트가 유실 될 수 있음). 버퍼가 비어있을 때까지 구독 유형의 이벤트를 차례로 호출합니다. 이것은 기본적으로 비동기로 실행됩니다. SynchronizingObject 속성이 in the documentation으로 기술되어있는 한 기본값이 사용됩니다. this answer.
문서에서 하나 이상의 파일 감시자 만 동일한 폴더를보고있는 경우에도 파일 변경 이벤트를 수신한다는 점에 유의하십시오.
요약 : 기본적으로 이러한 이벤트는 버퍼에 저장된 다음 버퍼가 비워 질 때까지 별도의 스레드에 의해 연속적으로 빠르게 발생합니다. 많은 파일이 너무 빨리 생성되거나 변경되면 버퍼 오버 플로우로 인해 일부 변경 사항이 손실 될 수 있습니다.
0
동시에 x
번 발생합니다. 여러 파일에 대해 동시에 Created
이벤트를 실행할 수 있습니다.
하나의 경우 동일한 순간에 x 개의 새로운 파일을 동시에 만드는 방법은 무엇입니까? 지연이있을 것입니다. 그런 다음 이벤트가 서로 다른 코어에서 실행되는 여러 스레드에서 동시에 발생하고 동시에 동기화되는 지 여부에 대한 주제가 있습니다. 가능성은 거의 없습니다. 나는 "동시에"일어날 일이 무엇인지 알 수 없다. 그러나 어쩌면 내가 그 질문을 오해 할 수도있다. – spender
당신이 옳습니다. 그것은 동시에 일어나지 않을 것입니다. 그러나 10 개의 빈 텍스트 문서를 만들어 모니터링 대상 폴더로 옮기면 최소한 동시에 인간의 관점에서 볼 때 거의 동시에 생성됩니다. 어쨌든, 나를 걱정하는 부분은 각 파일을 처리하는 데 많은 시간을 소비 할 수있는 이벤트 처리기 프로 시저 내의 코드입니다. 나는이 모든 과정이 동시에 일어나기를 원하지 않는다. –
대기열이 필요한 것 같습니다. – spender