.NET에서 타이머를 구현하는 방법을 잘 모르겠지만 타이머를 만들기 위해 Windows API를 사용하는 경우 양식 메시지 루프는 WM_TIMER
메시지를 수신하며 양식 스레드가 사용 중이 아닌 경우에만 처리 할 수 있습니다. 요청에 따라 적절한 시간에 타이머가 작동하지만 UI 스레드가 스톨 될 수 있습니다. 타이머는 SetTimer
API로 시작되며 OS는 WM_TIMER
메시지를 게시합니다.
제가 확인했습니다
만 System.Windows.Forms.Timer+TimerNativeWindow.StartTimer(Int32)
에 따라 다릅니다 :
[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
public static extern IntPtr SetTimer(HandleRef hWnd, int nIDEvent, int uElapse, IntPtr lpTimerFunc);
그래서에만이 타이머는 설명 "문제"를 가지고있다.
System.Windows.Forms.Timer를 사용하지 않는 경우 컨트롤에 액세스하면 적절한 InvokeRequired 검사 및 호출을 수행하지 않으면 Exception을 throw합니다. –
맞아, 내 질문에 내가 사용해야 할 타이머가 확실하지 않다고 말했어 야했다. MSDN을 제공하고 읽은 세 가지 옵션을 살펴보면 System.Timers.Timer는 Tick의 경우처럼 오른쪽의 경우처럼 보입니다.이 호출은 주 스레드에서 만들어진 개체에 만들어야합니다. – MrEdmundo
@MrEdmundo : "주 스레드"가 정확히 무엇을 의미합니까? –