我有一个表单,它有一个耗时的方法在其中运行。我想在运行时通过按键取消该方法,但是由于某些限制,我无法将该方法转换为任务或任何异步操作。
场景是,用户按下一个按钮,该按钮调用该方法(可以说它运行一会儿(x> y)),该方法会花费一些时间,如果用户按下esc键,我想打破那种方法。
如何捕获无响应形式的按键?由于while方法阻止了表单,因此表单的按键方法没有响应。
答案 0 :(得分:1)
您可以尝试使用耗时的方法来调用Application.DoEvents
,但这也会处理所有类型的消息,包括危险的消息,例如试图关闭表单等等。
如果您可以重新编写代码并将我们长期运行的方法放在BackgroundWorker
中,那就更好了。
答案 1 :(得分:0)
如您所说,它没有响应,将无法捕获输入。 相反,您可以在其中实现后台线程来完成您的工作,因此您可以根据需要取消线程