문제

나는 그것을 알고 있습니다 .그물 세 가지 타이머 유형이 있습니다(참조: .NET Framework 클래스 라이브러리의 타이머 클래스 비교).메인 스레드가 바쁜 경우 다른 유형이 표류할 수 있으므로 스레드 타이머를 선택했으며 이것이 안정적이어야 합니다.

이 타이머가 타이머 제어에서 작동하는 방식은 다른 스레드에 배치되므로 사용 중이 아닐 때 상위 스레드에서 완료된 작업 시작과 함께 항상 틱할 수 있습니다.

콘솔 응용 프로그램에서 이 타이머의 문제는 타이머가 다른 스레드에서 작동하는 동안 기본 스레드가 응용 프로그램을 닫는 데 아무 작업도 수행하지 않는다는 것입니다.

나는 while true 루프가 발생하지만 타이머가 꺼지면 메인 스레드가 너무 바빠집니다.

도움이 되었습니까?

해결책

당신은 다음과 같은 것을 사용할 수 있습니다 Console.ReadLine() 메인 스레드를 차단하여 다른 백그라운드 스레드(예: 타이머 스레드)가 계속 작동하도록 합니다.다음을 사용할 수도 있습니다. 자동 재설정이벤트 실행을 차단하려면 (필요한 경우) 해당 AutoResetEvent 객체에서 Set() 메서드를 호출하여 메인 스레드를 해제할 수 있습니다.또한 Timer 개체에 대한 참조가 범위를 벗어나지 않고 가비지 수집되지 않는지 확인하세요.

다른 팁

사용을 고려해보세요 수동재설정이벤트 처리가 끝나면 메인 스레드를 차단하고 호출합니다. Reset() 타이머 처리가 완료되면 여기에 표시됩니다.지속적으로 실행해야 하는 경우 콘솔 앱 대신 서비스 프로세스로 이동하는 것이 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top