특정 시간을 기다린 후 실행하려면 코드가 필요합니다. 이것은 내 스레드를 차단하지 않고 비동기식으로 발생해야합니다. 나는 웹을 검색했고이를위한 많은 방법을 찾았다. 두 가지 옵션은 System.Timers를 사용하거나 RegisterWaitForSingleObject 및 ManualResetEvent를 사용하는 것입니다.
나는 그 차이를 알아 내지 못했고, 언제 다른 것을 선호할지 알 수 없었다. Timers 또는 RegisterWaitForSingleObject를 ManualResetEvent와 함께 사용하는 이유와시기를 간략하게 설명해 주시겠습니까?
사이드 노트 : 저는 TAP와 TPL을 좋아하고 일반적으로 다른 패턴보다 선호합니다 (그러나 이것이 System.Timer를 사용하지 않는 유일한 이유입니까?)
타이머
특정 시간 사이에 동일한 코드를 여러 번 실행 하려면 타이머를 사용 합니다.
RegisterWaitForSingleObject
문서에 가장 잘 나와 있습니다.
WaitHandle을 기다리는 대리자를 등록합니다 .
그리고 a WaitHandle
는 당신이 원할 때 사용됩니다.
공유 리소스에 대한 독점 액세스를 기다립니다.
공유 리소스를 기다리지 않는 경우 사용 사례에 적합하지 않습니다.
ManualResetEvent
문서에 따르면
신호를 받으면 수동으로 재설정해야하는 스레드 동기화 이벤트를 나타냅니다.
"신호"및 "재설정"은 코드에서 수행해야하는 작업입니다. 스레드 중 하나가 계속할 수 있음을 다른 스레드에 신호해야 할 때 사용됩니다.
사용 사례
당신은 말했다 :
특정 시간을 기다린 후 실행하려면 코드가 필요합니다.
코드를 계속해서 반복 할 필요가없고 공유 리소스를 기다리지 않고 다른 스레드를 기다리지 않는 경우 위의 방법 중 어느 것도 적절하지 않습니다.
계속 진행하기 전에 특정 시간을 기다려야하는 경우 이미 언급했듯이 다음을 사용하십시오 Task.Delay
.
await Task.Delay(5000); //wait 5 seconds
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다