public void SetMonitoredItems(GroupItem item, MonitoredItem[] monitoredItems)
{
// check if callbacks are enabled.
if (item == null || m_monitoredItems == null)
{
return;
}
// save the monitored items.
lock (m_monitoredItems)
{
DataChangeInfo info = null;
if (!m_monitoredItems.TryGetValue(item.ClientHandle, out info))
{
m_monitoredItems[item.ClientHandle] = info = new DataChangeInfo();
}
info.MonitoredItems = monitoredItems;
// resend the last cached value.
if (info.LastError != null || info.LastValue != null)
{
for (int ii = 0; ii < monitoredItems.Length; ii++)
{
monitoredItems[ii].QueueValue(info.LastValue, info.LastError);
}
}
}
}