C# 在控制台应用程序的后台监听按键

发布于 2024-11-26 04:16:21 字数 155 浏览 0 评论 0原文


大家好
我正在控制台应用程序中使用 .Net 2。
我有一个可以长期工作的方法。它的名字是:
public void DO(){....}
我想当按键时停止工作。
我如何做到优雅?
有活动吗?
感谢您的帮助

Hello all

I am working with .Net 2 at console application.

I have a method that do a long job. it name is:

public void DO(){....}

i want when key-press to stop the job.

how i do it elegant?

with event?

thanks for your help

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

素衣风尘叹 2024-12-03 04:16:21

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

编辑

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

示例

One of the solution can be simply run DO(..) in another thread, and listen for the key press on main thread Console.ReadLine() or any other overload. At the moment you get a key, signal to DO(...) method's thread to stop.

EDIT

Simple, very basic example (I see you're talking about C# 2.0) by using volatile bool variable can find here:

Sample

葬シ愛 2024-12-03 04:16:21

就像 Tigran 所说,只需使用线程即可。
使用事件会冻结应用程序,直到侦听下一个事件。

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

Like Tigran said, just use a Thread.
Using events freezes the application till the next event is listened.

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;
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文