Esempio n. 1
0
 protected override void Dispose(bool explicitDispose)
 {
     _acquisition = null;
     _acquire     = null;
     _release     = null;
     //
     base.Dispose(explicitDispose);
 }
Esempio n. 2
0
            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));
            }