【发布时间】:2014-01-13 02:24:42
【问题描述】:
我正在编写这个程序,我想通过一个while循环永远运行,每当用户按下键盘上的某个键时,它就会退出程序。我到处都看过,但我只看到了 KeyEvents,但 WindowsForm 在程序运行时没有激活。谁有我的解决方案?
编辑:程序接管光标,因此在 UI 上激活事件基本上是不可能的
编辑二:
public void MainMethod()
{
while (true)
{
if (checkBox1.Checked == true) state = State.PERFORM_ACTION_ONE;
if (checkBox2.Checked == true) state = State.PERFORM_ACTION_TWO;
// More stuff checking which state to assign
switch (state)
{
case State.PERFORM_ACTION_ONE:
DoSomething();
break;
// More cases
// I want it to be able to break anywhere in the while loop
}
}
}
【问题讨论】:
-
你说的是处理Ctrl+C in console application 吗?
-
这里没有线程问题或其他任何问题。他问“如何在未聚焦时使用键盘关闭我的应用程序?”而已。
while loop根本不相关。对于他的问题,答案是热键。 -
@Rudy - 我明白了......我确实以完全不同的方式阅读了这个问题(可能是因为无限
while在 WinForm 应用程序中对我来说并没有真正意义,并且可能是由于缺少 WinForms 标签) ...现在感觉更像XY problem - 也许如果 OP 解释了实际目标是什么,我们可以找到比全局钩子更痛苦的解决方案。 -
你在写什么类型的应用程序?服务?安慰? WinForm?
-
你不能在 UI 线程上运行那个紧密的循环。您必须在后台线程上运行循环。