/// <summary>
 /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
 /// </summary>
 public void Dispose()
 {
     lock (lockObject)
     {
         mPtr.Destroy();
         mPtr = null;
     }
 }