64

私は現在 Delphi XE2 を使用しており、XE3 での自動更新による新しい Live Binding について聞きました (XE2 のように Notify() を呼び出す必要はありません)。

C# または Delphi XE2 ではINotifyPropertyChanged( Notify();Delphi で) 実装する必要がありますが、このアプローチは本当に理にかなっています。なぜなら、更新するコンテンツといつ更新するかを完全に制御できるため、パフォーマンスを微調整して仮想化を簡単に実装できるからです。

しかし、私はそれがどのように機能するのか、それを実装するために彼らがどのようなメカニズムを行ったのかを知りたいだけであり、彼らがどのようにそれを行ったのかわかりません。自動更新を実装するために使用された可能性のある仮定は次のとおりです.

  1. タイマー : タイマーが頻繁に作動し、すべてのデータを更新します

    パフォーマンスが非常に遅い 仮想化なし

  2. コンパイラ レベルの機能 :notify() eventsコンパイラによって自動的に実装されるすべての関連コード

    オーバーヘッドが多い

  3. いくつかの他のアプローチ:

彼らがそれをどのように実装したかを特定するのを手伝ってください。

現在、XE3 の試用版を使用しているため、ソース コードにアクセスできません。あなたの回答は、新しい機能に切り替えるかどうかを決定するのに役立ちます
バインドする 400 個のプロパティを持つクラス (コレクション アイテム) があるため (常にすべてではありません)、アプリケーションの安定性においてパフォーマンスが大きな役割を果たします。

4

1 に答える 1

2

LiveBinding は、いくつかのイベントに基づいて任意のオブジェクトを対象の別のオブジェクトにバインドすることによって発生します。これはオブザーバー パターンによって発生します。イベント トリガーがあると、オブジェクト インスペクターに通知され、インスペクターは既に登録されているコンポーネントに通知して変更を表示します。

お役に立てれば。掘り下げたい場合は、これに関するドキュメントがたくさんあります。

于 2013-06-05T20:39:28.067 に答える