protected override void Dispose(bool explicitDispose) { _acquisition = null; _acquire = null; _release = null; // base.Dispose(explicitDispose); }
public async Task <IVh <T> > RequireInstanceAsync(IContext context = default) { var currentAcq = ReadDA(ref _acquisition, considerDisposeRequest: true); if (currentAcq is null) { P_Acquisition newAcq = default; try { newAcq = new P_Acquisition(acquire: ReadDA(ref _acquire), release: ReadDA(ref _release, considerDisposeRequest: true), lifecycleId: _id, logger: _logger); if (!UpdDAIfNullBool(location: ref _acquisition, value: newAcq, current: out currentAcq)) { await newAcq.ReleaseAsync().ConfigureAwait(false); } } catch { itrlck.SetNull(location: ref _acquisition, comparand: newAcq); throw; } } return(await currentAcq.AcquireAsync(context : context).ConfigureAwait(false)); }