c # keypress прослушивание в фоновом режиме в консольном приложении - PullRequest
1 голос
/ 26 июля 2011


Привет всем
Я работаю с .Net 2 в консольном приложении.
У меня есть метод, который выполняет долгую работу. это имя:
public void DO(){....}
Я хочу, когда нажатие клавиши прекращает работу.
как мне это элегантно сделать?
с событием?
спасибо за вашу помощь

Ответы [ 2 ]

2 голосов
/ 26 июля 2011

Одним из решений может быть просто запустить DO(..) в другом потоке и прослушать нажатие клавиши в основном потоке Console.ReadLine() или любую другую перегрузку.В тот момент, когда вы получаете ключ, дайте сигнал DO(...) потоку метода прекратить.

РЕДАКТИРОВАТЬ

Простой, очень базовый примерC # 2.0) с помощью переменной volatile bool можно найти здесь:

Образец

0 голосов
/ 26 июля 2011

Как сказал Тигран, просто используйте тему.Использование событий останавливает приложение до следующего события.

private static bool abortthread = false;

public static void main()
{
    new Thread(new ThreadStart(DO)).Start();
    Console.ReadLine();
    abortthread = true;
}

private static DO()
{
    while(true)
    {
      if(abortthread)
      return;
    }
}
...