64 lines
1.8 KiB
C#
64 lines
1.8 KiB
C#
using System;
|
|
|
|
namespace Sarand.Net.Standard.Base.Core
|
|
{
|
|
//=======================================================================
|
|
/// <summary>
|
|
/// Disposable class.
|
|
/// <br/>- Override 'protecetd void Dispose(bool disposing)' to dispose resources when flag is true.
|
|
/// </summary>
|
|
public interface ISacsDisposable : IDisposable
|
|
{
|
|
/// <summary>Returns flag to indicate whether object has been disposed.</summary>
|
|
bool Disposed { get; }
|
|
}
|
|
|
|
//=======================================================================
|
|
public abstract class SacsDisposable : ISacsDisposable
|
|
{
|
|
//-------------------------------------------------------------------
|
|
// Data members.
|
|
private bool disposed = false;
|
|
|
|
//-------------------------------------------------------------------
|
|
// Construction.
|
|
protected SacsDisposable()
|
|
{
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Disposal.
|
|
~SacsDisposable()
|
|
{
|
|
Dispose(!disposed);
|
|
}
|
|
public void Dispose()
|
|
{
|
|
if (disposed) return;
|
|
Dispose(true);
|
|
disposed = true;
|
|
GC.SuppressFinalize(this);
|
|
}
|
|
protected abstract void Dispose(bool disposing);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Properties.
|
|
public bool Disposed { get { return disposed; } }
|
|
|
|
//-------------------------------------------------------------------
|
|
// Utilities.
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
|
|
//=======================================================================
|
|
public static class DisposableUtil
|
|
{
|
|
//-------------------------------------------------------------------
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
|
|
//=======================================================================
|
|
}
|