如何重置DispatcherTimer?

kaz*_*.ma 12 c# xaml windows-phone-8.1

这些是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;
}        
Run Code Online (Sandbox Code Playgroud)

这就是我所说的:

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";
    }

}
Run Code Online (Sandbox Code Playgroud)

这是我显示计时器的xaml代码:

<TextBlock Name="Duration" Text="{Binding}"  HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="24"></TextBlock>
Run Code Online (Sandbox Code Playgroud)

我正在制作一个录音应用程序,我想每次用户按下捕获来显示计时器.我的问题是我无法重置它

Chu*_*are 19

调用Stop()然后Start()应该重新启动Timer Interval.

  • 你不需要调用`Stop()`,调用`Start()`就足以重置计时器了. (10认同)
  • @Romasz 要重置计时器,您需要调用 Stop() 和 Start() [.NET 参考来源:DispatcherTimer.Start()](https://referencesource.microsoft.com/#WindowsBase/Base/System/Windows/线程/DispatcherTimer.cs,a3450586a3e54079) (5认同)
  • @KazaMaster那是因为另一个问题.你的数学不正确.你永远不会重置SpanTime = 0,你继续添加它... (2认同)

小智 7

SpanTime按下"捕获"按钮时需要(重新)设置.做就是了

SpanTime = new TimeSpan();
Run Code Online (Sandbox Code Playgroud)

它应该重置为零并重新开始,直到再次按下按钮.