如何重置DispatcherTimer?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何重置DispatcherTimer?相关的知识,希望对你有一定的参考价值。
这些是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;
}
这就是我所说的:
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";
}
}
这是我显示计时器的xaml代码:
<TextBlock Name="Duration" Text="{Binding}" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="24"></TextBlock>
我正在制作一个录音应用程序,我想每次用户按下捕获来显示计时器。我的问题是我无法重置它
答案
按下“捕获”按钮时,需要(重新)设置SpanTime
。做就是了
SpanTime = new TimeSpan();
它应重置为零并重新开始,直到再次按下按钮。
另一答案
调用Stop()
然后调用Start()
应该重新启动Timer Interval。
以上是关于如何重置DispatcherTimer?的主要内容,如果未能解决你的问题,请参考以下文章
dotnet 读 WPF 源代码 聊聊 DispatcherTimer 的实现
如何在DispatcherTimer结束之前暂停for循环?