c#keypress在控制台应用程序的后台监听

时间:2011-07-26 06:34:02

标签: c# events delegates c#-2.0 console-application

你好
我在控制台应用程序中使用.Net 2。 我有一个做长期工作的方法。它的名字是:
public void DO(){....} 我希望按键停止工作。 我怎么做优雅的?
与事件?
感谢您的帮助

2 个答案:

答案 0 :(得分:2)

其中一个解决方案可以简单地在另一个线程中运行DO(..),并监听主线程Console.ReadLine()上的按键或任何其他重载。在您获得密钥的那一刻,发信号通知DO(...)方法的线程停止。

修改

使用volatile bool变量的简单,非常基本的例子(我看到你在谈论C#2.0)可以在这里找到:

Sample

答案 1 :(得分:0)

像Tigran所说,只需使用一个Thread。 使用事件冻结应用程序,直到听取下一个事件。

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;
    }
}