Wie Sie bereits gelernt haben sind die Eigenschaften von ACComponent Klassen die IACPropertyBase implementieren. IACPropertyBase besitzt die Eigenschaft PropertyLogListInfo LiveLog. PropertyLogListInfo wiederum ist eine Eigenschaft, die eine Serie von Eigenschaftswerten speichern kann.
Sobald Sie das erste Mal auf LiveLog zugreifen, wird automatisch ein Eigenschaftsprotokollierungsmechanismus in Gang gesetzt. Jedes Mal, wenn sich der Eigenschaftswert ändert, wird der neue Wert in einen Ringpuffer geschrieben. Auf die Werte dieses Ringpuffers greifen Sie per Eigenschaft LiveLogList zu. Die Standardkapazität des Ringpuffers beträgt 500 Werte. Sie können allerdings diesen Wert in der iPlus-Entwicklungsumgebung im Feld "Größe des Log-Puffers" ändern:
Die gespeicherten Werte im Ringpuffer sind vom Typ PropertyLogItem.
public class PropertyLogItem
{
public DateTime Time { get; set; }
public object Value { get; set; }
}
Die LiveLogList-Eigenschaft ist vom Typ PropertyLogRing:
public class PropertyLogRing : PropertyLogRing<PropertyLogItem>
{
public PropertyLogRing() : this(500) { }
}
Der Ringpuffer implementiert das Interface INotifyCollectionChanged, damit Wertänderungen anderen Klassen per Event mitgeteilt werden können:
public class PropertyLogRing<T> : INotifyCollectionChanged, IList<T>
{
}
Das Steuerelement VBChartControl ist beispielsweise solch eine Klasse, die auf Wertänderungen reagiert und die protokollierten Werte auf der GUI als Liniendiagramm darstellt.
Hier noch einmal die Klasse PropertyLogListInfo:
public class PropertyLogListInfo : INotifyPropertyChanged
{
public PropertyLogRing LiveLogList {get;}
public IList<PropertyLogItem> PropertyLogList {get;}
}
PropertyLogListInfo kann nicht nur Live-Werte speichern, sondern auch archivierte Werte aus einem Langzeitarchiv bereitstellen. Verwenden Sie daher die Eigenschaft PropertyLogList, um die Eigenschaftswerte zu lesen, weil PropertyLogListInfo entweder Livewerte oder archivierte Werte darüber zugänglich macht.