C#循环和按键中断循环

时间:2011-04-25 13:56:01

标签: c# winforms infinite-loop

我的代码包含以下内容:

{
    var comeback = Cursor.Position;
    code goes here
    code goes here
    code goes here
    code goes here
    code goes here
    code goes here
    Cursor.Position = restart;
}

现在,我希望这个循环不断循环,直到我调用按键停止为止。

我不能做什么我写这个循环的代码,或者我应该采用不同的方式来解决这个问题。

提前致谢

3 个答案:

答案 0 :(得分:6)

while(!Console.KeyAvailable)
{
    //do work
}

答案 1 :(得分:1)

因为OP感谢我的第一个答案,我将把它作为下面的参考。

考虑使用后台线程来执行循环。然后通过双击KeyPressed事件在项目中添加一个键监听器(如果你有visual studio,打开属性选项卡并检查事件)。你会得到这样的东西:

    private bool keyPressed;

    public MyClass() {
        keyPressed = false;
        Thread thread = new Thread(myLoop);
        thread.Start();
    }

    private void myLoop() {
        while (!keyPressed) {
            // do work
        }
    }

    private void MyClass_KeyPress(object sender, KeyPressEventArgs e) {
        keyPressed = true;
    }
}

考虑让一个线程听一个按键,然后在程序中设置一个你在循环中检查的标志。

例如未经测试

bool keyPressed = false;
...    
void KeyPressed(){
    Console.ReadKey();
    keyPressed = true;
}
...
Thread t = new Thread(KeyPressed);
t.Start();
...
while (!keyPressed){
    // your loop goes here
    // or you can check the value of keyPressed while you're in your loop
    if (keyPressed){
        break;
    }
    ...
}

答案 2 :(得分:-2)

有一个布尔变量。

像 bool flag = true; 而(标志) { 你的代码; }

按下该键时,将标志更改为false。