0

大家好——

我正在编写一个程序,该程序在 Matlab 上从一个数据库到另一个数据库解析和清理大量数据,从 MySQL 进行查询。这将连续运行,因为新数据每分钟进入第一个数据库,被清理,并在下一个数据点进入之前放入干净的数据库。我想知道在这个过程中,我如何解释两件事.. .

  1. 每三个晚上 MySQL 都会关闭以进行备份。我希望我的程序在发生这种情况时暂停,并在它备份时恢复。我四处寻找解决方案,但似乎找不到解决方案。

  2. 允许用户杀死程序。我已经把它缩小到要么考虑 ctrl+c 杀死,要么创建一个 GUI 来做到这一点。大家觉得哪个策略更好呢?

提前感谢您在此问题上的时间和帮助。

4

1 回答 1

0

TIMER与 GUI 一起使用。

首先,创建一个带有两个切换按钮的 GUI——“暂停”和“取消”。当您的程序启动时,启动 GUI 并捕获它的句柄。将此句柄传递给计时器对象。每当计时器对象设置为执行时,它应该将“暂停”按钮的“值”属性设置为 1,并在计划维护结束时将其设置回 0。同时,我假设您的程序正在运行,一个while循环,应该在每次迭代时检查暂停按钮的值。如果按下按钮(即其值为 1),程序不应尝试访问数据库。如果按钮被释放,程序应该正常运行。

当程序检查按下的暂停按钮时,它还应该检查按下的“取消”按钮。如果按下该按钮,则该函数应break循环并正常退出。

在 GUI 中,您还可以设置closeRequestFcn,您可以在其中弹出一个对话框,询问用户是否真的想退出正在运行的数据库程序。如果用户选择“是”,隐藏 GUI ( set(guiHandle,'Visible',false)) 并“按下”取消按钮,以便程序退出。当您关闭 Matlab 而没有先停止程序时,closeRequestFcn 也会执行。这可以帮助您避免意外关闭 Matlab 并因此意外终止您的进程。

于 2010-07-31T13:40:46.587 回答