2017-02-23 3 views
-1

重い機械を制御するためのSCADAソリューション用の.NETプログラムを開発しましたが、アプリケーションの時間管理に関連する問題がいくつかあります。勧告。.NET上のアプリケーションのような確定的なアプリケーションプログラミング

私はWinformsタイマーを使用して定期的にチェックし、制御されているプロセスに関連するいくつかの変数の値を記録します。アプリケーションは、中断することなくオンに約40時間を費やします。開始時にはタイマーが作動し、5分間隔で値がデータベースに記録されます。しかし、40時間が終わると、同じタイマーが設定を変更せずに、1時間に1回だけ呼び出されます。

私の質問は基本的には "特定のコードがC#で開発されたプログラムで固定周期間隔で実行されるようにするにはどうすればよいですか?"私は実際には純粋なリアルタイムソリューションは必要ありません。機能が常に一定の時間間隔で呼び出されるようにしてください。しかし、それらの間隔は非常に重要ではない、我々は約5分の長さを話している。コードを実行するのにかかる時間は重要ではありませんが、コードが常に同じ時間に実行されることが重要です。

通常のユーザー空間プログラムではなくサービスとしてアプリケーションを実行する方がよいでしょうか?それはC + +で "タイムクリティカル"の部分を開発し、ソケットなどを介してC#のコードと通信するより良い選択ですか? begginingタイマーで

+1

_real-time_群衆の怒りを解消するために、あなたのタイトルを改め、あなたの 'tags 'を改訂したいと思うかもしれません。 5分間隔はほとんどありません_real-time_プログラミング – MickyD

+0

コードを見ることなく、何が間違っているのかは分かりませんが、WinFormsのタイマーは問題ではありません。それらは問題が他の場所にあるので、数ヶ月後でも適切にチェックされます –

答えて

0

はありません、それは私が本当に純粋なリアルタイム・ソリューションを必要としない

...

のWindows ... 5分の時間間隔で、仕事ですこのためにタスクスケジューラが作成されています。それを使用すると、オプションの引数であなたが選んだ.exeを実行させることができます。スケジュールが静的な場合は、TS UIでスケジュールを設定したり、複雑な場合はCOM APIを使用してスケジュールを設定するほうがよいでしょう。

TSが既にそれをしているときにカウントダウンについてぶら下がっている別のプロセスを持つよりもずっと優れています。

関連する問題