300バイトの生データを1秒間に20回解析してWPFコントロールプロパティの束にする場合、あなたの解決策は何ですか?ポーリングからイベントに変更する最も良い方法は何ですか?
具体的には、私はModbus対応PLCを持っており、WPF HMIを制御する必要があります。 Modbusはデータ変更のためのポーリングを必要とする通信プロトコルです。対照的に、WPFと.NET Frameworkは一般的にイベントドリブンモデルを推進しているので、データをコントロールに直接20回プッシュすることは私には不自然に思えます。 Modbusはデータの変更を報告する手段が欠けているだけでなく、バイトの高水準表現も提供していません。また、無署名のshort配列を意味のあるものに適切に分解するのは開発者次第です。
このようなデータの解析は大したことではありませんが、イベント対応のDependencyProperties(データバインディングが想定されている)の束に適切に変換することは困難です。私は、変更を監視するための初期化コードや一時記憶域をたくさん持っているのは嫌です。
がINotifyPropertyChangedの使用:あなたは確かに別々のスレッドでポーリングしますので、あなたは以下のコードのようにDispatcher.BeginInvokeによってUIスレッド上PropertyChangedイベントを呼び出すようにしてください更新されたプロパティを取得するため)。しかし、データを収集したり更新頻度を制限したりすると、UIに大きな遅れが生じます。つまり、ユーザーがバルブをクリックして開くと、ロギングの目的やUIの応答性にできるだけ早く反映される必要があります。 – Yegor
取得に関する詳細...すべてのデータポイントに対して別々のプロパティを作成するのは嫌いです(解析後に数十もある)。 – Yegor
最初の点では、1秒間に20回UIを更新することは問題ありません。第二に、すべてのデータポイントをメンバーとするデータクラスを作成し、それをデータプロパティのタイプとして使用することができます。 – Clemens