循环开始停止时C#做

Cor*_*reM 2 c# loops for-loop while-loop do-while

我试图为这个循环制作一个停止按钮,但它运行无限期,当我点击按钮2时没有任何反应

bool dowhile = false;
private void button1_Click(object sender, EventArgs e)
{
    do
    {
        for (int i = listbox1.Items.Count - 1; i >= 0; i--)
        {
            string textstring = listbox1.Items[i].ToString();
            richTextBox1.AppendText("" + textstring + ": Done\n");
            Thread.Sleep(1000);
        }
    } while (!dowhile);
}
private void button2_Click(object sender, EventArgs e)
{
    this.dowhile = true;
}
Run Code Online (Sandbox Code Playgroud)

我哪里出错了?

sry for"lvlchanger"错字,现在代码还可以,没有什么遗漏

我也在寻找一个不那么长的修复:))

Mar*_*ell 5

系统无法处理消息队列中的任何内容(即按钮点击,重新绘制等),直到button1_Click完成为止- 它永远不会.这正是导致所有"{blah}没有响应"消息的原因 - 代码没有及时响应消息队列.

基本上,不要这样做.一个hacky修复将是一些DoEvents(),但不!做得好; 基本上,从而处理事件button2_Click.也许你应该从计时器滴答声中运行刷新?