文本框不显示文本,UI屏幕不移动

时间:2019-05-06 06:28:48

标签: c# winforms

这是我的要求,我必须在计时器内部使用while循环,在单击按钮后启动应用程序后 UI被锁定,无法移动并且文本也无法在文本框中显示

下面是代码

using System;
using System.Windows.Forms;
namespace WinScreenLocked
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int Number = 0;
        private void timer1_Tick(object sender, EventArgs e)
        {
            while (true)
            {
                textBox1.Text = Number.ToString();
                Number++;
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Start();
        }
    }
}

3 个答案:

答案 0 :(得分:1)

config/auth.php

通常的警告是:计时器不会非常准确,可能需要使用GC.KeepAlive(timer)

另请参阅:Why does a System.Timers.Timer survive GC but not System.Threading.Timer?

答案 1 :(得分:1)

您可以停止线程以阻止ui,即使用

    System.Threading.Thread.Sleep(2000);

在2000毫秒以上等于2秒需要花费毫秒。

答案 2 :(得分:0)

由于这是Winform,因此可以使用Application.DoEvents()处理UI刷新。

请参见:https://social.msdn.microsoft.com/Forums/en-US/b1b1969d-8a51-496c-9274-a0ac1708a8b4/what-does-applicationdoevents-actually-do?forum=csharplanguage