다음 코드를 사용하는 데 문제가 있습니다. SetTimer()
을 호출하고 사용자가 interval
에 도달하기 전에 사용자가 응답 할 것으로 예상하는 코드가 있습니다 ( 밀리 초). 호출 코드는 이러한 기능을 상속받습니다. 사용자가 응답하면 StopTimer()
이 호출되고 정보는 StartTimer()
이 호출되며 사용자는 interval
시간 내에 다시 응답해야합니다. 이는 사용자가 답장에 실패하거나 너무 오래 걸릴 때까지 계속됩니다 (interval
지나서).DispatcherTimer가 중지 된 후에도 계속 실행됩니다. C# UWP
문제는 타이머가 멈추지 않는다는 것입니다. 내가 멈춘 후에도 계속 반복됩니다. Tick
이벤트를 null
(-=
방법으로)으로 설정하고 범위를 이탈했습니다. 심지어 새로운 저장소 인 새로운 DispatcherTimer
(나는 이전의 것과 새로운 것을 각각 사용했다. 이전 Timer
을 삭제할 수 없습니다.
내가 뭘 잘못하고 있니? 사전에
using Windows.UI.XAML;
public DispatcherTimer GameTimer;
internal void SetTimer(int interval)
{
GameTimer = new DispatcherTimer();
GameTimer.Tick += TimerCallback;
GameTimer.Interval = new TimeSpan(0,0,0,0,interval);
GameTimer.Start();
}
internal void StopTimer()
{
GameTimer.Stop();
try
{
GameTimer.Tick -= TimerCallback;
} catch {}
}
private void TimerCallback(object sender, object e)
{
StopTimer();
// Other code
}
감사합니다,
'} catch {}'는 나쁜 습관입니다. 로그 또는 catch하지 않는 무슨 일이 일어나고 있는지. – ebyrob
'System.Windows.Threading.DispatcherTimer'를 사용하여 해 보았습니까? 비슷한 코드를 실행 중이며 멈추는 데 문제가 없습니다. 나는'Windows.UI.XAML.DispatchTimer'을 시도 할 것이지만 윈도우 10의 개발 상자는 가지고 있지 않습니다. – ebyrob
나는'System.Windows.Threading'을 사용하기 위해서'WindowsBase'를 참조로 설치해야한다고 믿습니다. UWP 앱이 가능하지 않다고 생각합니다. 아니면 적어도 어떻게 해야할지를 발견하지 못했습니다. 그래서. –