나는 단지 100 밀리 초마다 EnableRaisingEvents를 켜고 끄기 위해 어쨌든 궁금한가요? 예를 들어, 처음에는 EnableRaisingEvents가 true로 설정됩니다. 이벤트가 들어 오면 EnableRaisingEvents가 false로 설정됩니다. 100 밀리 초 후에 EnableRaisingEvents가 true로 다시 설정됩니다. 파일 감시자가 다른 이벤트를 수신 할 때까지 EnableRaisingEvents는 다시 false로 설정됩니다. EnableRaisingEvents가 꺼져있는 동안 이벤트를 놓칠 수 있습니다 (false로 설정). 그래서이 논리를 코드에서 어떻게 실현해야하는지 궁금합니다. 저를 혼란스럽게하는 것은 행사가 어차피 해고 될 것입니다.이 행사를 수락할지 여부를 결정하기 위해 진드기를 사용해야합니까?EnableRaisingEvents는 100 밀리 초마다 발생합니까?
답변
당신은 (오스틴 Salonen의 제안에 편집) 이런 식으로 뭔가를 시도 할 수 있습니다 :
private static Timer _myTimer = new Timer();
// ...
private static void OnTick(Object obj, EventArgs args)
{
fileSystemWatcher.EnableRaisingEvents ^= true;
}
// ...
_myTimer.Tick += OnTick;
_myTimer.Interval = 100;
_myTimer.Start();
공유 부울 대신 OnTick에서 EnableRaisingEvents를 전환하지 않는 이유는 무엇입니까? –
@AustinSalonen 나는 당신이 의미하는 바를 이해하지 못했습니다. 조금 더 명확히 해 주시겠습니까? – hattenn
대신에'_raiseEvent' 대신'fsw.EnableRaisingEvents^= true; '를 사용합니다. –
Timer (threading one)를 사용하고 타이머의 경과 간격을 100ms로 설정하면 UI 스레드에서 FS wather를 만든 경우 호출을 직렬화해야 할 수도 있습니다.
그것은 당신이 해결하고자하는 문제가 무엇인지 불분명하다. EnableRaisingEvents를 false로 설정하면 "이벤트 발생 중지"가 아니라는 것을 명심하십시오. 이벤트는 그 후 얼마 동안 해고 될 수 있습니다. 그리고 이렇게 할 때 Error 이벤트를 구독하는 것을 잊지 않는 것이 좋습니다. –
나는 "EnableRaisingEvents가 꺼지는 (false로 설정) 시간 동안 이벤트를 놓치지 않는 것이 좋습니다"라고 생각합니다. –