/// <summary>
 /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
 /// </summary>
 public void Dispose()
 {
     if (ResponseStream != null)
     {
         ResponseStream.Dispose();
     }
     if (QueryTimer != null)
     {
         QueryTimer.Dispose();
     }
 }
 /// <summary>
 /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
 /// </summary>
 public void Dispose()
 {
     if (_reader != null)
     {
         _reader.Close(); // also closes underlying stream
         _reader = null;
     }
     if (QueryTimer != null)
     {
         QueryTimer.Dispose();
         QueryTimer = null;
     }
 }