예제 #1
0
    /// <summary>
    /// Closes the specified project that is active in the service and frees associated resources
    /// </summary>
    /// <param name="projectTree">Project to be closed</param>
    public virtual void CloseProject(ProjectTree projectTree)
    {
        if (projectTree is null)
        {
            throw new InvalidOperationException($"{nameof(CloseProject)} parameter '{nameof(projectTree)}' was null");
        }

        if (_projects.Contains(projectTree))
        {
            foreach (var resource in projectTree.EnumerateBreadthFirst().Select(x => x.Item).OfType <IDisposable>())
            {
                resource.Dispose();
            }

            _projects.Remove(projectTree);
        }
    }