/// <summary>
 /// Establish measurement key cache based on received meta-data.
 /// </summary>
 /// <param name="metadata">Meta-data received from a subscription.</param>
 /// <param name="instanceName">Instance name of the historian.</param>
 /// <remarks>
 /// If you want the <see cref="IMeasurement.Key"/> values that are returned from a <see cref="GetHistorianData"/> query
 /// to have properly assigned Guid based signal IDs, i.e., <see cref="MeasurementKey.SignalID"/>, establish the
 /// measurement key cache as soon as you have received meta-data from a GEP subscription query.
 /// </remarks>
 public static void EstablishMeasurementKeyCache(DataSet metadata, string instanceName)
 {
     // Check to see if data for the "MeasurementDetail" table was included in the meta-data
     if (metadata.Tables.Contains("MeasurementDetail"))
     {
         // Establish default measurement key cache
         foreach (DataRow row in metadata.Tables["MeasurementDetail"].Rows)
         {
             MeasurementKey.CreateOrUpdate(Guid.Parse(row.Field <object>("SignalID").ToString()), instanceName, row.Field <uint>("PointID"));
         }
     }
 }