public void DeleteAddressSpace()
{
List<IDisposable> nodesToDispose = new List<IDisposable>();
try
{
m_lock.Enter();
// collect nodes to dispose.
foreach (INode node in m_nodes)
{
IDisposable disposable = node as IDisposable;
if (disposable != null)
{
nodesToDispose.Add(disposable);
}
}
m_nodes.Clear();
}
finally
{
m_lock.Exit();
}
// dispose of the nodes.
foreach (IDisposable disposable in nodesToDispose)
{
try
{
disposable.Dispose();
}
catch (Exception e)
{
Utils.Trace(e, "Unexpected error disposing a Node object.");
}
}
}