Ich habe Probleme mit dem folgenden Code. Ich habe einen Code, der SetTimer()
aufruft und erwartet, dass der Benutzer antwortet, bevor interval
erreicht wird (in Millisekunden). Der aufrufende Code erbt diese Funktionen. Wenn der Benutzer antwortet, wird StopTimer()
aufgerufen, Info wird angezeigt, StartTimer()
wird aufgerufen, und der Benutzer wird voraussichtlich erneut innerhalb der interval
Zeitperiode antworten. Dies geht so lange, bis der Benutzer eine Antwort verfehlt oder zu lange dauert (geht über die interval
hinaus).DispatcherTimer hält weiter an, nachdem ich es gestoppt habe. C# UWP
Das Problem ist, dass die Timer nicht aufhören. Sie wiederholen sich auch, nachdem ich sie gestoppt habe, setzen ihr Tick
Ereignis auf null
(durch die Methode -=
) und beließen ihren Bereich. Ich bekomme sogar neuen Speicher mit einem neuen DispatcherTimer
(ich habe dies sowohl mit dem alten als auch mit einem neuen gemacht). Ich kann nicht die alte Timer
weggehen.
Was mache ich falsch?
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
}
Vielen Dank im Voraus,
-Justin
'} fangen {}' ist nur schlechte Übung. Protokollieren oder nicht fangen, um sicher zu sein, was los ist. – ebyrob
Haben Sie versucht, 'System.Windows.Threading.DispatcherTimer' zu verwenden. Ich führe einen ähnlichen Code aus und habe keine Probleme damit aufzuhören. Ich würde 'Windows.UI.XAML.DispatchTimer' versuchen, aber kein Windows 10 Dev-Feld haben. – ebyrob
Ich glaube, um 'System.Windows.Threading' verwenden zu können, muss ich' WindowsBase' als Referenz installiert haben, was meiner Meinung nach für eine UWP-App nicht möglich ist, oder zumindest habe ich nicht herausgefunden, wie es geht damit. –