为什么 Thread.Sleep 会堆积?

我有一个按钮,可以激活计时器一次。我想隐藏我的表单,暂停表单 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();

        }


三国纷争
浏览 104回答 2
2回答

HUH函数

叠加的是委托订阅,即这个timer.Tick += timer1_Tick_1;每次执行此操作时,它都会添加一个处理程序。事实上,每次添加相同的目标实例/方法并不重要:它将被调用多次。基本上只做一次。

天涯尽头无女友

您不会Timer.Tick在任何地方取消订阅事件,因此每次在此行中添加其他处理程序时都按按钮timer.Tick += timer1_Tick_1;。timer.Tick -= timer1_Tick_1;您应该在代码中的某个地方使用
打开App,查看更多内容
随时随地看视频慕课网APP