You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# WPF使用DispatcherTimer更新Label时Tick事件不执行如何解决

问题原因

你代码里存在两个核心问题导致Tick事件无法触发:

  1. 初始化DispatcherTimer后没有调用Start()方法启动计时器,计时器默认处于停止状态,自然不会触发Tick回调
  2. 你在MainWindow构造函数中声明的letterRandomizer实例是局部变量,构造函数执行完成后该实例没有被任何引用持有,会被垃圾回收器销毁,其内部的DispatcherTimer也会随之被释放

修复方案

第一步:修改letterRandomizer类的构造函数,添加计时器启动逻辑

public letterRandomizer(Label myLbl)
{
    this.MyLbl = myLbl;
    letter.Tick += Letter_Tick;
    letter.Interval = TimeSpan.FromSeconds(2);
    // 新增启动计时器的代码
    letter.Start();
}

第二步:修改MainWindow代码,将letterRandomizer实例提升为类成员变量,避免被GC回收

// 声明为类成员变量
private letterRandomizer _letterRandomizer;

public MainWindow()
{
    InitializeComponent();
    _letterRandomizer = new letterRandomizer(myLbl);
}

修改完成后运行即可看到Label每隔2秒刷新为随机大写字母。

内容的提问来源于stack exchange,提问作者Liryk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 01:24:05