0

ごきげんよう~

私は、MySQL からクエリを実行して、Matlab 上のあるデータベースから別のデータベースに大量のデータを解析して消去するプログラムを作成しています。これは、新しいデータが毎分最初のデータベースに入り、クリーンアップされ、次のデータポイントが入る前にクリーンなデータベースに置かれるため、継続的に実行されます. .

  1. バックアップのために 3 晩ごとに MySQL がシャットダウンされます。これが発生したときにプログラムを一時停止し、バックアップ時に再開したいと思います。私は解決策を探しましたが、これに対する解決策が見つからないようです。

  2. ユーザーがプログラムを強制終了できるようにします。私はこれを ctrl+c でのキルを説明するか、それを行うための GUI を作成するかのどちらかに絞り込みました。皆さんはどちらの戦略がより良いと思いますか?

この件について、お時間をいただきありがとうございます。

4

1 に答える 1

0

GUI と共にTIMERを使用します。

まず、「一時停止」と「キャンセル」の 2 つのトグル ボタンを持つ GUI を作成します。プログラムが起動したら、GUI を起動してそのハンドルをキャプチャします。このハンドルをタイマー オブジェクトに渡します。タイマー オブジェクトが実行するように設定されている場合は常に、「一時停止」ボタンの「値」プロパティを 1 に設定し、定期メンテナンスの最後にそれを 0 に戻す必要があります。その間、実行されるプログラムは、 while ループは、繰り返しごとに一時停止ボタンの値をチェックする必要があります。ボタンが押された場合 (つまり、値が 1 の場合)、プログラムはデータベースにアクセスしようとしません。ボタンを放すと、プログラムは通常どおり実行されます。

プログラムは、一時停止ボタンが押されたかどうかをチェックするときに、「キャンセル」ボタンが押されたかどうかもチェックする必要があります。そのボタンが押された場合、関数はbreakループして正常に終了します。

GUI では、closeRequestFcnを設定することもできます。この場合、実行中のデータベース プログラムをユーザーが本当に終了するかどうかを尋ねるダイアログ ポップが開きます。ユーザーが「はい」を選択した場合は、GUI を非表示にし ( set(guiHandle,'Visible',false))、キャンセル ボタンを「押して」、プログラムを終了できるようにします。closeRequestFcn は、プログラムを最初に停止せずに Matlab を閉じたときにも実行されます。これにより、誤って Matlab を閉じてしまい、誤ってプロセスを強制終了してしまうことを防ぐことができます。

于 2010-07-31T13:40:46.587 に答える