Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#键盘挂钩冻结_C#_Windows_Keyboard_Hook_Freeze - Fatal编程技术网

C#键盘挂钩冻结

C#键盘挂钩冻结,c#,windows,keyboard,hook,freeze,C#,Windows,Keyboard,Hook,Freeze,我正在制作一个程序,它使用一个钩子来监视Windows中按下的键。在该程序中,我在Windows窗体环境中处理该键。当我按下一个键时,我的整个窗口会冻结3秒钟,对于VisualStudio调试器也是如此,调用堆栈会在3秒钟后显示 守则: (我去掉了一些不相关的部分) 我认为67号线出了问题,因为91号线再次呼叫Callnexthookx,对吗 如何解决此问题?当您的回调返回得不够快时,就会发生这种情况。Windows忍受了一段时间,然后杀掉hook以保持操作系统的可用性。从代码片段中不清楚钩子的

我正在制作一个程序,它使用一个钩子来监视Windows中按下的键。在该程序中,我在Windows窗体环境中处理该键。当我按下一个键时,我的整个窗口会冻结3秒钟,对于VisualStudio调试器也是如此,调用堆栈会在3秒钟后显示

守则: (我去掉了一些不相关的部分)

我认为67号线出了问题,因为91号线再次呼叫Callnexthookx,对吗


如何解决此问题?

当您的回调返回得不够快时,就会发生这种情况。Windows忍受了一段时间,然后杀掉hook以保持操作系统的可用性。从代码片段中不清楚钩子的实际作用,OnKey没有明显的订户。在回调方法上设置断点当然足够好,可以实现这一点。我知道这就是问题所在。问题是我如何解决它。这不是问题的一个很明显的原因。如果它真的那么慢,那么您必须更改注册表项以增加超时。不完全是修复,Windows仍然死机。你必须使它更快,例如,将作业剥离到工作线程。我将查找有关工作线程的一些信息,我发现的那些对我来说并不简单。现在谢谢你。我发现,即使我什么都不做,它还是会冻结。我随机尝试将CallNextHookEx更改为IntPtr.Zero,但也没有效果。所以,我又被卡住了。