When you call Read, QuickOPC sets up an OPC subscription internally anyway. This is in attempt to have the values “ready” for you next time, without having to go the OPC server. QuickOPC observes the pattern of Reads, and from time to time, it adjusts the update rate of the OPC subscription. This is done by removing the items from one OPC group and adding them to a different group.
The rate adjusting operation may have some side-effects. It may be time consuming and be the reason of the occasional longer processing times. Writes would be affected indirectly – because (unless you specifically specify differently), only one “channel” is used to communicate with the OPC server, so while the items are being moved, other operations have to wait as well.
Also, the value of an OPC item that is being moved to a different group may be unavailable momentarily.
We do not provide a straightforward way to disable the auto-subscription and rate-adjusting mechanism described above. But you can try to set the parameters as below – the first two are static properties and should be set just once, at the beginning of the program; the other two are instance properties and should be set on each instance of EasyDAClient (if you have more than one):
EasyDAClient.SharedParameters.Topic.SlowdownWeight = 0.0f;
EasyDAClient.SharedParameters.Topic.SpeedupWeight = 0.0f;
var target = new EasyDAClient();
target.InstanceParameters.UpdateRates.ReadAutomatic = Timeout.Infinite;
target.InstanceParameters.UpdateRates.WriteAutomatic = Timeout.Infinite;
Note that when doing it like this, it may very well happen that you Read times will become slower – because they will become a “true” OPC reads.