为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 Thread.Sleep 会堆积?

为什么 Thread.Sleep 会堆积?

C#
三国纷争 2023-08-20 15:30:51
我有一个按钮,可以激活计时器一次。我想隐藏我的表单,暂停表单 5.5 秒,然后再次显示。我注意到,如果我启动应用程序后第一次按下按钮,Thread.Sleep 为 5.5 秒,但如果我再次按下它,它会休眠 11 秒。当我第三次按下它后,它会休眠 16 秒,依此类推......这对我来说真的很奇怪,我不知道为什么会这样。有人有主意吗?注意:我的应用程序迫切需要 Thread.Sleep。    using System.Threading;    private void Btn_Abwesend_Click(object sender, EventArgs e)        {                   timer.Tick += timer1_Tick_1;            timer.Interval = 100;            timer.Start();        }    private void timer1_Tick_1(object sender, EventArgs e)        {            this.Hide();            Thread.Sleep(5500);            this.Show();            timer.Stop();        }
查看完整描述

2 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

叠加的是委托订阅,即这个

timer.Tick += timer1_Tick_1;

每次执行此操作时,它都会添加一个处理程序。事实上,每次添加相同的目标实例/方法并不重要:它将被调用多次。基本上只做一次。


查看完整回答
反对 回复 2023-08-20
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

您不会Timer.Tick在任何地方取消订阅事件,因此每次在此行中添加其他处理程序时都按按钮timer.Tick += timer1_Tick_1;timer.Tick -= timer1_Tick_1;您应该在代码中的某个地方使用



查看完整回答
反对 回复 2023-08-20
  • 2 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信