有没有办法以无响应的形式捕获 keydown 事件

我有一个表单,它有一个在其中运行的耗时方法。我想在它运行时用按键取消该方法,但是由于一些限制,我无法将该方法转换为任务或任何异步。

场景是,用户按下一个按钮,该按钮调用该方法(假设它运行一段时间(x > y)),这需要一些时间,如果用户按下 esc 键,我想打破该方法。

如何捕获无响应表单的按键?由于 while 方法阻止了表单,因此表单的按键方法没有响应。


富国沪深
浏览 85回答 2
2回答

蝴蝶不菲

您可以尝试Application.DoEvents从耗时的方法调用,但这也会处理各种消息,包括尝试关闭表单等危险消息。如果您可以重新编写代码并将我们长期运行的方法放在BackgroundWorker.

郎朗坤

正如您所说,它没有响应并且无法捕获输入。相反,您可以实现一个后台线程在那里完成您的工作,因此您可以根据需要取消线程
打开App,查看更多内容
随时随地看视频慕课网APP