问候所有人 -
我正在编写一个程序,在Matlab上从一个数据库解析和清理大量数据,从MySQL查询。这将持续运行,因为新数据每分钟进入第一个数据库,被清理,并在下一个数据点进入之前放入干净的数据库。我想知道在这个过程中,我可以解释两件事情。
每三个晚上MySQL都会关机进行备份。我希望我的程序在发生这种情况时暂停,并在其备份时恢复。我四处寻找解决方案,似乎无法找到解决方案。
允许用户终止程序。我把它缩小到要么占用ctrl + c kill,要么创建一个GUI来做到这一点。您认为哪种策略更好?
提前感谢您的时间和帮助。
答案 0 :(得分:0)
将TIMER与GUI结合使用。
首先,创建一个带有两个切换按钮的GUI - “暂停”和“取消”。程序启动时,启动GUI并捕获其句柄。将此句柄传递给计时器对象。每当timer对象设置为执行时,它应该将'pause'按钮的'Value' property设置为1,并在计划维护结束时将其设置为0.同时,你的程序运行,I假设,一个while循环,应该在每次迭代时检查暂停按钮的值。如果按下按钮(即其值为1),程序不应尝试访问数据库。如果释放按钮,程序应该正常运行。
当程序检查按下的暂停按钮时,它还应检查按下的“取消”按钮。如果按下该按钮,则该函数应break
循环并正常退出。
在GUI中,您还可以设置closeRequestFcn,在其中打开一个对话框,询问用户是否确实要退出正在运行的数据库程序。如果用户选择“是”,则隐藏GUI(set(guiHandle,'Visible',false)
)并“按”取消按钮,以便程序可以退出。当你关闭Matlab而没有先停止程序时,closeRequestFcn也会执行。这可以帮助您避免意外关闭Matlab,从而意外地杀死您的流程。