Цикл C # и нажатие клавиши - PullRequest
       24

Цикл C # и нажатие клавиши

4 голосов
/ 25 апреля 2011

Мой код состоит из чего-то вроде этого:

{
    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 ]

6 голосов
/ 25 апреля 2011
while(!Console.KeyAvailable)
{
    //do work
}
1 голос
/ 25 апреля 2011

, так как OP поблагодарил меня за первый ответ, я оставлю это в качестве ссылки ниже ..

рассмотрите возможность создания фонового потока, который выполняет цикл.Затем добавьте ключевой слушатель в свой проект (если у вас есть visual studio, откройте вкладку свойств и проверьте события), дважды щелкнув событие KeyPressed.Вы получите что-то вроде этого:

    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;
    }
    ...
}
0 голосов
/ 25 апреля 2011

ИМЕЮТ БУЛЕВЫЙ ПЕРЕМЕННЫЙ.

like bool flag = true;while (флаг) {ваш код;}

когда клавиша нажата, поменяйте флаг на false.

...