我试图让一个程序发布一堆文本。用户输入文本、消息数量以及必须以多快的速度传递这些消息。当程序很忙时,按钮文本需要是“停止”而不是“开始”。当您在最初启动它后按下按钮强制它停止时,文本会变回“开始”,但是当程序在传递给定数量的消息后停止时不会发生这种情况,即使代码已到位并且不会产生错误。
我有一种感觉,这是因为文本由于某种原因没有更新。我试图用 Invalidate() 和 Update() 刷新它,但这不起作用。如何解决这个问题?
这是代码:
private void button1_Click(object sender, EventArgs e)
{
if (button1.Text == "Start")
{
isEvil = true;
button1.Text = "Stop";
Thread t = new Thread(StartTyping);
t.Start(textBox1.Text);
}
else
{
isEvil = false;
button1.Text = "Start";
}
}
private void StartTyping(object obj)
{
string message = obj.ToString();
int amount = (int)numericUpDown2.Value;
Thread.Sleep(3000);
for (int i = 0; i < amount; i++)
{
if (isEvil == false)
{
//////This does NOT work
//button1.Text = "Start";
//button1.Invalidate();
//button1.Update();
//button1.Refresh();
//Application.DoEvents();
break;
}
SendKeys.SendWait(message + "{ENTER}");
int j = (int)numericUpDown1.Value * 10;
Thread.Sleep(j);
}
}