2

私の状況は、Windows タスク スケジューラでアプリを実行しているということです。このアプリは 1 日 1 回、午後 1 時に実行されます。アプリはいくつかのクエリを実行し、データを FTP サイトに転送します。私がここにいない週末を除いて、アプリが実行され、確認のためにGUIがまだ表示されていることを除いて、すべてうまく機能しています。これにより、アプリをシャットダウンするまでスケジューラーでの実行が停止するようです。したがって、土曜日に実行され、月曜日に戻ったときに確認できるようにアプリが表示されたままになります。ただし、日曜日にスケジューラが再度実行しようとすると、アプリが閉じられていないため失敗します。

まず、これがタスク スケジューラの本来の動作方法であることを確認させてください。第二に、毎日実行し、確認できるように GUI を表示したままにするスケジュールの代替手段は何ですか。各セッションは他のセッションに干渉しないため、アプリは複数回実行できます。そのため、休暇で 1 週間不在だった場合、戻ったときには、アプリの 7 つのインスタンスが実行されており、レビューを待っていると予想されます。

ありがとうAGP

4

3 に答える 3

1

最善の策は、UI を削除してメッセージをイベント ログまたはログ ファイルに記録することです。必要に応じて、UI を別のプロセスとして CLI から生成することもできますが、独自の非子プロセスとして実行する必要があります。

または、プロセスを直接実行する代わりに、バッチ ファイルを実行することもできます。バッチ ファイルで、EXE の代わりに「START path_to_exe」を呼び出します。これにより、バッチ ファイルが即座に「終了」し、exe が独自のプロセスで実行されます。これは良い長期的な解決策ではありませんが、差し迫った問題に対する一時的な解決策を提供します.

于 2010-09-27T19:23:28.160 に答える
0

出力やエラーのUIを表示するのではなく、ログファイルに書き込むことをお勧めします。このようにして、アプリケーションは書き込みを行ってから終了することができ、都合の良いときにログを確認できます。これは、自動化されたプロセスの非常に一般的なソリューションです。

于 2010-09-27T20:25:34.650 に答える
0

This is the default behavior of the Scheduled Task system, as it doesn't know that the job is complete until the application actually exits. Therefore, if your application is still open after 24 hours, the next run will simply be skipped because the current run is "still going" as far as the scheduler is concerned.

Personally I would re-visit the way that you handle your job process, as your are setting up a scenario that will be hard to manage long term.

于 2010-09-27T18:14:41.800 に答える