I have an application where I am monitoring tags for changes to their attributes (zero, span etc etc), to do this I am using event pipes on the PIPoints attribute of the server as follows...
IEventPipeAccess epa = (IEventPipeAccess)ThreadLocalPISDK.Instance.Servers[_server].PIPoints; _eventPipe = (IEventPipe2)epa.EventPipe; ((_DEventPipeEvents_Event)_eventPipe).OnNewValue += new _DEventPipeEvents_OnNewValueEventHandler(OnNewEvent);
So basically I am monitoring every change to all the points on the system, as I can find no way of restricting the list of servers[server].PIPoints(obviously) or of getting an attribute monitoring event pipe interface from a subset of the points in the system.
This works well enough, but I am just wondering if this is the most efficient way of monitoring for these changes given that the system could potentially contain many tags and my application will only be interested in the changes on a small percentage of them.
For monitoring point value events, we can add and remove points (subscribers) to/from the event pipe. Is there any way of doing this for attribute monitoring event pipes as well?
If not I was wondering if this method would still be efficient when there are many tags contained in the server and we are only interested in a few of these?