특정 간격으로 특정 코드를 실행할 수있는 타이머를 사용하려고하지만 Winforms 타이머가 매우 부정확합니다. 2 초로 설정했지만 48 초가 지나면 작동하지 않습니다. 내가 실행하고있는 코드의 종류는 가능한 한 빨리 행동하는 데 크게 의존하므로 48 초가 너무 늦어서 아무 것도 할 수 없습니다..NET에서 가장 정확한 타이머는 무엇입니까?
또한 나는 실행중인 코드가 매우 간단하기 때문에 타이머가 많은 CPU 사이클을 먹는 것을 원하지 않습니다.
어, 너무 늦게 * 46 초가 지나면 * UI 스레드를 잘못 차단하는 것과 같은 것으로 의심됩니다. WinForms 타이머는 생성 된 해당 UI 스레드에서 전달됩니다 (일반적으로 "기본"창당 하나씩 있음). 블로킹 스레드 주변에서 * 발사하기를 원하면 다른 스레드를 도입하거나 다른 스레드를 사용하는 타이머를 사용해야합니다 (차단되지 않음). – user2246674
감사합니다. 기본적으로 Monitor 메서드를 호출하는 BackgroundWorker를 사용하고 있습니다. 타이머가 RunWorkerAsync를 호출 중입니다. 이거 나쁜거야? –
BGW.RunWorkerAsync *는 차단하면 안됩니다. 타이머 콜백에 BGW가 완료 될 때까지 대기하는 것과 같은 차단 코드가 있습니까? – user2246674