[Add] VContainer
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace VContainer.Internal
|
||||
{
|
||||
sealed class CompositeDisposable : IDisposable
|
||||
{
|
||||
readonly Stack<IDisposable> disposables = new Stack<IDisposable>();
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
IDisposable disposable;
|
||||
do
|
||||
{
|
||||
lock (disposables)
|
||||
{
|
||||
disposable = disposables.Count > 0
|
||||
? disposables.Pop()
|
||||
: null;
|
||||
}
|
||||
disposable?.Dispose();
|
||||
} while (disposable != null);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Add(IDisposable disposable)
|
||||
{
|
||||
lock (disposables)
|
||||
{
|
||||
disposables.Push(disposable);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user