WPF DispatcherTimer一些个人看法

本文探讨了WPF中DispatcherTimer的一个常见问题,即非UI线程创建DispatcherTimer实例会导致Tick事件无法触发。通过示例代码说明了如何正确创建和使用DispatcherTimer,以确保能正常进入Tick事件处理。原因在于DispatcherTimer依赖于UI线程的Dispatcher,非UI线程创建时Dispatcher为空,影响事件处理。
摘要由CSDN通过智能技术生成

wpf中的DispatcherTimer基本用法,本文不在叙述。主要写一些不同的,来提醒自己不要再犯同样错误。

 

前几天写代码时发现。当在非UI线程创建DispatcherTimer实例时,程序无法进入Tick事件

private static System.Windows.Threading.DispatcherTimer timer;

private void Button_Click(object sender, RoutedEventArgs e)
{
    new System.Threading.Thread(CreateTimer).Start();
}

private void CreateTimer()
{
    timer = new System.Windows.Threading.DispatcherTimer();
    timer.Interval = TimeSpan.FromSeconds(1);
    timer.Tick += DispatcherTimer_Click;
    timer.Start();
}

private void DispatcherTimer_Click(object sender, EventArgs e)
{
    Console.WriteLine("DispatcherTimer_Click");
}

在DispatcherTimer_Click函数入口设断点,发现程序无法进入。

 

如果这

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值