내 System.Threading.Timer (콜백 포함)는 절대로 안정적으로 실행되지 않습니다. 이것은 타이머가 텍스트 상자에서 실행될 예정인 시간을 입력하는 프로그래밍 할당의 일부입니다.System.Threading.Timer 콜백이 호출되지 않습니다.
System.Threading.Timer timer = new System.Threading.Timer(WorkerObject.callback, null, delay, Timeout.Infinite);
그리고 지연은 처음 발사 콜백에 대한 지연을 (한 번만 발생하도록되어) 설명하는 단순히 int
입니다 :
타이머는 다음과 같이 선언한다.
콜백 방법이 같다 : 스레드를 정지
public static void callback(Object stateinfo)
{
stop = true;
}
효과에 스레드 풀의 스레드에 의해 실행되는 루프 (정지 사실에 플래그를 설정 않는 모든).
루프는 다음과 같습니다
while (!stop)
{
currentTextbox.Invoke(new Action(delegate()
{
currentTextbox.AppendText((counter++) + Environment.NewLine);
currentTextbox.Update();
}));
}
내 문제는 stop
변수가 항상 5000 밀리 초 이상 지연에 대한 잘못된 것입니다. 콜백을 항상 강제로 "강제 실행"할 수있는 방법이 있습니까?
이 질문이 적용되지 않을 수도 있습니다 (API를 잊어 버렸습니다) ...하지만 타이머를 시작합니까? – Jaxidian
프로그램은 타이머가 멈출 때까지 지속적으로 증가하는 카운터를 인쇄합니다. System.Threading.Timer를 시작할 필요가 없습니다. 지연 후 자동으로 시작됩니다 (0은 지연되지 않지만 제 경우에는 지연을 지정했습니다). – docaholic
@Jaxidian : 'System.Threading.Timer'는 사용자가 생성 할 때 시작됩니다. –