Mfc 结束正在运行的lua脚本

Mfc 结束正在运行的lua脚本,mfc,lua,Mfc,Lua,我有一个基于MFC对话框的应用程序,并集成了Lua。该对话框有一个文本编辑器组件,用户可以输入脚本。该对话框还有一个按钮“Run”,按下该按钮时会执行以下操作:luaL_loadstring(luaVM,脚本);lua_pcall(luaVM,0,0,0);luaVM是我的主要lua_州*。该对话框还有另一个按钮“停止”,我希望在按下该按钮时能够停止由“运行”启动的当前正在运行的脚本,但我无法想出一种方法。非常感谢您的帮助 Lua不打算以这种方式使用。Lua本质上是单线程的(硬件CPU线程,而不

我有一个基于MFC对话框的应用程序,并集成了Lua。该对话框有一个文本编辑器组件,用户可以输入脚本。该对话框还有一个按钮“Run”,按下该按钮时会执行以下操作:luaL_loadstring(luaVM,脚本);lua_pcall(luaVM,0,0,0);luaVM是我的主要lua_州*。该对话框还有另一个按钮“停止”,我希望在按下该按钮时能够停止由“运行”启动的当前正在运行的脚本,但我无法想出一种方法。非常感谢您的帮助

Lua不打算以这种方式使用。Lua本质上是单线程的(硬件CPU线程,而不是Lua线程)。一旦脚本启动,就无法简单地终止它,除非您将该脚本设计为能够终止

您需要做的是将用户的脚本作为协同程序启动。这种协同程序必须经常(手动)产生,以便您可以检查是否应该停止脚本。由于这是一个手动过程,您可能需要用户正确地插入其代码,或者需要修改其脚本并适当地添加
yield
调用


您可以使用一些调试钩子每隔几秒钟检查一次,如果需要停止,则生成协同程序。然而,我不知道这是否真的有效,如果从调试挂钩中让步是合法的。

Lua不打算以这种方式使用。Lua本质上是单线程的(硬件CPU线程,而不是Lua线程)。一旦脚本启动,就无法简单地终止它,除非您将该脚本设计为能够终止

您需要做的是将用户的脚本作为协同程序启动。这种协同程序必须经常(手动)产生,以便您可以检查是否应该停止脚本。由于这是一个手动过程,您可能需要用户正确地插入其代码,或者需要修改其脚本并适当地添加
yield
调用


您可以使用一些调试钩子每隔几秒钟检查一次,如果需要停止,则生成协同程序。然而,我不知道这是否真的有效,如果从调试挂钩中让步是合法的。

您可以设置一个休眠一段时间的调试挂钩


请参见

您可以设置一个休眠一段时间的调试挂钩


请参见

我不知道MFC,但如果MFC允许您手动处理一个GUI事件,那么您可以设置计数挂钩,以便每隔一段时间执行一次。可能的重复我不知道MFC,但如果MFC允许您手动处理一个GUI事件,那么您可以设置计数挂钩,以便每隔一段时间执行一次。可能的重复