【发布时间】:2019-05-06 06:28:47
【问题描述】:
这是我的要求,我必须在计时器内使用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();
}
}
}
【问题讨论】:
-
您的问题是什么?您将 UI 锁定在 UI 的线程(主线程)中。您需要创建一个不同的线程来处理控件的更改。如果您更改不同线程中的控件,则需要调用该操作(如果需要调用)。如果您不想锁定 UI,这是一个示例。 docs.microsoft.com/en-us/dotnet/framework/winforms/controls/…
-
看起来帖子中的代码满足要求 - 有一个无限循环会冻结按计时器启动的 UI(假设您已正确配置计时器)......要求有点奇怪(它是很少听到让 UI 无响应的请求)...但是由于代码符合要求,因此不清楚您到底有什么问题?
-
这是一个创建发布的示例项目,在实际项目中,计时器滴答事件中有while循环,while循环将循环直到它从一个api获取值,所以在那个时期只有UI被锁定跨度>