問題
私はデータパッケージの一定の流れを持っています。新しいパッケージが着信するたびに(100ミリ秒間隔)、イベントがポップアップします。このイベントでは、パッケージをクラスに送信してデータを処理し、視覚化します。残念ながら、現在のパッケージが処理される前に新しいパッケージが送信された場合、パッケージのプロセスが中止される可能性があります。
私が今持っているもの
別のプログラムのdllとして使用されるコードです。dllのコーディングを始めたとき、私はc#を初めて使用したので、あまり複雑にしたくありませんでした。すべてが機能していますが、CPUが非常にビジーである場合、(視覚化の部分で)いくつかの醜いフレームスキップに直面しました。
私にはいくつかのクラスがあり、そのうちの1つはすべてのパッケージを処理しています。このクラスには、約50の属性25の関数と1000行のコードがあります。計算に必要な関数は6つだけです。残りは、属性を正しく設定することです(ユーザーが設定を変更した場合)。
変更する必要があるもの
そこで、リストを使用してすべての受信データをバッファリングしたいと思います。リストは別のスレッドで処理する必要があります。したがって、リストへのデータの書き込みに100ミリ秒以上かかることはほとんどありません^^(それぞれが約40個の要素を持つ2つの配列は、何にも等しくないはずです)
私が考えていること
上記のクラスを2つの別々のクラスに分割します。1つはパッケージを処理し、もう1つは設定を処理します。したがって、ユーザーと「プログラム」入力を分割します。「パッケージ処理」クラスを使用してバッファリングされたデータを処理するスレッドを作成します。
私には何の手がかりもありません
設定クラスには、処理クラスに必要な重要な属性が含まれているため、処理クラスも設定クラスのバッファーを変更/入力する必要があるため、最善の方法がわかりません。ただし、これはメインスレッドによって呼び出されます。それとも、設定と処理のクラスを分割せず、そのままにしておく方がよいでしょうか。私はスレッド化にあまり精通しておらず、この無料の電子書籍のスレッド化の最初の章をC#で読んでいます。