/// <summary>
/// Reports an event produced by the object.
/// </summary>
public virtual void ReportEvent(BaseEvent e)
{
lock (DataLock)
{
if (m_reportEventsToParent)
{
ObjectSource parent = Parent as ObjectSource;
if (parent != null)
{
parent.ReportEvent(e);
}
}
List <IEventMonitoredItem> monitoredItems = new List <IEventMonitoredItem>();
if (MonitoredItems != null)
{
foreach (IMonitoredItem monitoredItem in MonitoredItems)
{
IEventMonitoredItem eventItem = monitoredItem as IEventMonitoredItem;
if (eventItem != null)
{
monitoredItems.Add(eventItem);
}
}
if (monitoredItems.Count > 0)
{
EventManager.ReportEvent(e, monitoredItems);
}
}
}
}