/// <summary>
 /// Begins an asynchronous read operation for a set of items.
 /// </summary>
 /// <param name="items">The set of items to read (must include the item name).</param>
 /// <param name="requestHandle">An identifier for the request assigned by the caller.</param>
 /// <param name="callback">A delegate used to receive notifications when the request completes.</param>
 /// <param name="request">An object that contains the state of the request (used to cancel the request).</param>
 /// <returns>A set of results containing any errors encountered when the server validated the items.</returns>
 public OpcItemResult[] Read(
     TsCDaItem[] items,
     object requestHandle,
     TsCDaReadCompleteEventHandler callback,
     out IOpcRequest request)
 {
     return(_subscription.Read(items, requestHandle, callback, out request));
 }
 /// <summary>
 /// Begins an asynchronous read operation for a set of items.
 /// </summary>
 /// <param name="items">The set of items to read (must include the item name).</param>
 /// <param name="requestHandle">An identifier for the request assigned by the caller.</param>
 /// <param name="callback">A delegate used to receive notifications when the request completes.</param>
 /// <param name="request">An object that contains the state of the request (used to cancel the request).</param>
 /// <returns>A set of results containing any errors encountered when the server validated the items.</returns>
 public OpcItemResult[] Read(
     TsCDaItem[] items,
     object requestHandle,
     TsCDaReadCompleteEventHandler callback,
     out IOpcRequest request)
 {
     LicenseHandler.ValidateFeatures(LicenseHandler.ProductFeature.DataAccess);
     return(Subscription.Read(items, requestHandle, callback, out request));
 }