- 在WPF中使用定时器来更新UI元素是一种常见且有用的做法,特别是当你需要基于时间间隔来刷新数据或执行某些操作时。
DispatcherTimer
是WPF中用于在UI线程上执行周期性任务的理想选择,因为它确保了对UI元素的更新是线程安全的
例子程序
每隔0.5s 界面中的元素更改颜色
Xaml程序
<Grid>
<Rectangle x:Name="BlinkingRectangle" Width="100" Height="100" HorizontalAlignment="Center" VerticalAlignment="Center" Fill="Red"/>
</Grid>
CS程序
private DispatcherTimer _timer;
private bool _isRed = true;
public Window2()
{
InitializeComponent();
// 初始化定时器
_timer = new DispatcherTimer();
_timer.Interval = TimeSpan.FromSeconds(0.5); // 每0.5秒切换一次颜色
_timer.Tick += Timer_Tick; // 设置Tick事件处理程序
_timer.Start(); // 启动定时器
}
private void Timer_Tick(object sender, EventArgs e)
{
// 切换颜色
if (_isRed)
{
BlinkingRectangle.Fill = new SolidColorBrush(Colors.Green);
_isRed = false;
Console.WriteLine("绿色");
}
else
{
BlinkingRectangle.Fill = new SolidColorBrush(Colors.Red);
_isRed = true;
Console.WriteLine("红色");
}
}
// 确保在窗口关闭时停止定时器
protected override void OnClosed(EventArgs e)
{
_timer.Stop();
base.OnClosed(e);
}