static Task InternalLoad(List <MonoDevelopWorkspace> list, MonoDevelop.Projects.WorkspaceItem item, ProgressMonitor progressMonitor, CancellationToken cancellationToken = default(CancellationToken)) { return(Task.Run(async() => { var ws = item as MonoDevelop.Projects.Workspace; if (ws != null) { foreach (var it in ws.Items) { await InternalLoad(list, it, progressMonitor, cancellationToken); } ws.ItemAdded += OnWorkspaceItemAdded; ws.ItemRemoved += OnWorkspaceItemRemoved; } else { var solution = item as MonoDevelop.Projects.Solution; if (solution != null) { var workspace = new MonoDevelopWorkspace(); list.Add(workspace); workspace.ShowStatusIcon(); lock (workspaceLock) workspaces = workspaces.Add(workspace); await workspace.TryLoadSolution(solution, cancellationToken); solution.SolutionItemAdded += OnSolutionItemAdded; solution.SolutionItemRemoved += OnSolutionItemRemoved; workspace.HideStatusIcon(); } } })); }
static Task InternalLoad(List <MonoDevelopWorkspace> list, MonoDevelop.Projects.WorkspaceItem item, ProgressMonitor progressMonitor, CancellationToken cancellationToken = default(CancellationToken), bool showStatusIcon = true) { return(Task.Run(async() => { var ws = item as MonoDevelop.Projects.Workspace; if (ws != null) { foreach (var it in ws.Items) { await InternalLoad(list, it, progressMonitor, cancellationToken).ConfigureAwait(false); } ws.ItemAdded += OnWorkspaceItemAdded; ws.ItemRemoved += OnWorkspaceItemRemoved; } else { var solution = item as MonoDevelop.Projects.Solution; if (solution != null) { var workspace = new MonoDevelopWorkspace(solution); lock (workspaceLock) workspaces = workspaces.Add(workspace); list.Add(workspace); if (showStatusIcon) { workspace.ShowStatusIcon(); } await workspace.TryLoadSolution(cancellationToken).ConfigureAwait(false); solution.SolutionItemAdded += OnSolutionItemAdded; solution.SolutionItemRemoved += OnSolutionItemRemoved; TaskCompletionSource <MonoDevelopWorkspace> request; if (workspaceRequests.TryGetValue(solution, out request)) { request.TrySetResult(workspace); } if (showStatusIcon) { workspace.HideStatusIcon(); } } } })); }
static Task InternalLoad (List<MonoDevelopWorkspace> list, MonoDevelop.Projects.WorkspaceItem item, ProgressMonitor progressMonitor, CancellationToken cancellationToken = default(CancellationToken)) { return Task.Run (async () => { var ws = item as MonoDevelop.Projects.Workspace; if (ws != null) { foreach (var it in ws.Items) { await InternalLoad (list, it, progressMonitor, cancellationToken); } ws.ItemAdded += OnWorkspaceItemAdded; ws.ItemRemoved += OnWorkspaceItemRemoved; } else { var solution = item as MonoDevelop.Projects.Solution; if (solution != null) { var workspace = new MonoDevelopWorkspace (); list.Add (workspace); workspace.ShowStatusIcon (); lock (workspaceLock) workspaces = workspaces.Add (workspace); await workspace.TryLoadSolution (solution, cancellationToken); solution.SolutionItemAdded += OnSolutionItemAdded; solution.SolutionItemRemoved += OnSolutionItemRemoved; workspace.HideStatusIcon (); } } }); }