1

アセンブリのリストを含むエンジンがあります。アセンブリは、エンジンの初期化時に、登録された AssemblyClasses のリストから作成されます (したがって、実行時に固定されます)。アセンブリは、ParameterObject を使用して結果を再計算するようにトリガーできます。

Assembly の ParameterObject のプロパティが変更されるか、再計算が終了すると、通知イベント (ParameterChanged または ResultsChanged) が ListenersList 内のすべてのインターフェイスに対して発生します。各 Assembly には独自のリスナーリストがあります。

エンジンは、すべてのアセンブリのリスナーの 1 つとして自分自身を登録します。問題は、アセンブリが作成され、最初の ParameterObject が作成され、ParameterChanged イベントが発生したときに、エンジンがまだリスナーリストに追加されていないことです。そのため、最初の ParameterObject は通知されません。

これを解決する最善の方法は何ですか? エンジンの参照をコンストラクターに追加するか (marjan が提案したように、エンジンをリスナーとして参照する)、または各アセンブリを作成した後にエンジンのイベントハンドラーを明示的に呼び出す必要があります...

ところで、Delphi XE3 を使用して

提案に感謝します

4

0 に答える 0