public void Dispose() { disposerLock.EnterWriteLock(); try { if (disposed) return; GC.SuppressFinalize(this); Api.JetTerm2(instance, TermGrbit.Complete); } finally { disposed = true; disposerLock.ExitWriteLock(); } }