public void Dispose () { if (parent == null) return; var p = parent; lock (this) { if (parent == null) return; parent = null; } p.ReleaseHandle (); }