我想弄清楚为什么当我点击button1时,我从未在textBox1中看到“AAAA”。我只在一个Form上有一个按钮和一个textBox。光标转到WaitCursor很好。如果我在WaitCursor代码和For语句之间添加一个标准消息框,我会看到“AAAA”吗?为什么在示例1(下面)中从未见过“AAAA”?是的,我是编程的新手,很抱歉,如果这很明显的话。如果我使用Breakpoint textBox1.Text确实等于“AAAA”但从未在示例1中显示。
//Example 1 without message box:
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = "AAAA";
this.Cursor = Cursors.WaitCursor;
for (int i = 0; i < 1000000001; i++)
{
}
textBox1.Text = "BBBB";
this.Cursor = Cursors.Default;
}
//Example 2 with message box:
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = "AAAA";
this.Cursor = Cursors.WaitCursor;
MessageBox.Show("Test");
for (int i = 0; i < 1000000001; i++)
{
}
textBox1.Text = "BBBB";
this.Cursor = Cursors.Default;
}
答案 0 :(得分:4)
:您无法看到,因为AAAA
将在循环后立即替换为BBBB
。
在您的第二个代码块中:您可以看到AAAA
,直到您确认消息框。
答案 1 :(得分:2)
不要使用for循环使用它,而是使用方法async:
private async void button1_Click(object sender, EventArgs e)
{
textBox1.Text = "AAAA";
this.Cursor = Cursors.WaitCursor;
await Task.Delay(5000); // wait 5 second asynchronously
textBox1.Text = "BBBB";
this.Cursor = Cursors.Default;
}
Actualy你的AAAA
显示在textBox中,但是你看不到它。因为它发生得非常快。第二个例子你看AAAA因为它正在停止MessageBox而且不会循环,除非你关闭你的的MessageBox。