誤ったコードに直接関係のないタイマーの使用法に関する質問があります。何が起こっているのか理解したいのですが...
COM ポート経由でセンサーからデータを読み取り、それを変数に格納するプログラムを作成しました。これは DataReceivedHandler を使用して行われるため、「バックグラウンドで」行われます。ここで、毎秒その変数から実際の値を取得し、いくつかの計算を行うタイマーが必要です。計算時間は 50 ~ 70 ミリ秒程度なので、1 秒あれば十分です。System.Timer.Timer と System.Threading.Timer を使用してみましたが、どちらも一見すると正常に動作しているように見えますが、プログラムを数時間実行し続けると、途切れ始めます - タイマーがない場合がありますイベントが数秒続くと、1 つに 20 個のイベントが発生します (ただし、スキップされたすべてのタイマー イベントが追いつくわけではありません。多くのイベントは失われてしまいます)。タイマー イベントは何らかのキューに格納されていて、単にタイム スライスを取得していませんか? 私が理解した限りでは、
この問題は、タイマーではなく BackgroundWorkers を使用して解決しました。仕事をしてから(1000ミリ秒-WorkingTime)スリープするループを作成しました。これは完全に機能するのに、タイマーが機能しないのはなぜですか?
どんなヒントでも大歓迎です!