Hi, We are currently working on an application that manipulates the values of some tags (marks them as questionable), and we are using AFVal.PIPoint.UpdateValue(AFVal, OSIsoft.AF.Data.AFUpdateOption.Replace, OSIsoft.AF.Data.AFBufferOption.Buffer); to mark the values as questioble or replace their values. The problem is that some of the tags are fed through PI Buffer Subsystem and some of the tags are not. When we write to "Non-Buffered" tags, the tags get locked by the buffer subsystem and will not accept new values unless they are coming from the PI Buffer Subsystem. This will cause all the interfaces that are not configured for buffering to stop updating their tags, with error "Buffered Point does not accept new events".
Our solution was that at the startup, we take all the tags, and for each tag, we try to replicate or duplicate its current value (with replace to replace the original value) without buffer, that is using AFBufferOption.DoNotBuffer, and if the update was successfull, then we add the tag to "Non-Buffered" tags, else if we get an error with Status code: 11414, then we add the tag to the List of Buffered tags, and later on this tag will be updated using the AFBufferOption.Buffer option.
Our question is, is this the best way or is their a more straightforward method to verify buffered tags from non-buffered tags?