2014-11-27 13 views
7

Queste sono le mie dichiarazioni e metodi di DispatcherTimer:Come resettare un DispatcherTimer?

private DispatcherTimer DishTimer; 
private TimeSpan SpanTime; 
private void InitTimer() 
{ 

    DishTimer = new DispatcherTimer(); 
    DishTimer.Interval = new TimeSpan(0, 0, 0, 1); 
    DishTimer.Tick += TimerOnTick; 

} 
private void TimerOnTick(object sender, object o) 
{ 
    SpanTime = SpanTime.Add(DishTimer.Interval); 
    Duration.DataContext = SpanTime; 
}   

Questo è dove lo chiamo:

private void CaptureButton_Click(object sender, RoutedEventArgs e) 
{ 
    if ((string) CaptureButton.Content == "Capture") 
    { 

     CaptureAudio(); 
     InitTimer(); 
     DishTimer.Start(); 

     ProgressRing.IsActive = true; 
     CaptureButton.Content = "Stop"; 
    } 
    else 
    { 
     StopCapture(); 
     DishTimer.Stop(); 
     ProgressRing.IsActive = false; 
     CaptureButton.Content = "Capture"; 
    } 

} 

e qui è il mio codice XAML per mostrare il timer:

<TextBlock Name="Duration" Text="{Binding}" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="24"></TextBlock> 

Sto facendo un'app di registrazione vocale e voglio che ogni volta che l'utente preme la cattura per mostrare un timer. Il mio problema qui è che non posso resettarlo

risposta

3

È necessario (re) impostare SpanTime quando si preme il pulsante Cattura. solo fare

SpanTime = new TimeSpan(); 

dovrebbe essere azzerato e ricominciare finché non si preme nuovamente il pulsante.

+0

Non capisco davvero questo downvote. certo di non aver risposto al suo titolo di domanda. ma nella sua descrizione sembra che voglia reimpostare il tempo mostrato per l'utente. quindi suppongo che la mia risposta sia quello che cercava – chrosey

+0

in realtà funziona .. Grazie uomo –

+0

Felice di poter aiutare;) – chrosey

12

Chiamando Stop() e poi Start() si dovrebbe riavviare l'intervallo del timer.

+5

Non è necessario chiamare 'Stop()', chiamare 'Start()' sarà sufficiente per resettare il timer. – Romasz

+0

Vero, ma non ha senso leggere il codice in questo modo. Questa è un'ipotesi (una scorciatoia) che i programmatori pigri fanno e sarà strano a chiunque stia leggendo il codice. –

+0

dove esattamente chiama 'Stop()'? ho provato tra 'InitTimer()' e 'Start()' ma continua a contare da dove si è fermato. –