Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Krüger <mkrueger@xamarin.com>2017-04-24 12:25:03 +0300
committerMike Krüger <mkrueger@xamarin.com>2017-04-24 12:25:03 +0300
commit6440ea58310f3e9d3359b89b4825390e390d0c0d (patch)
tree726f3c78f5bfe13eeee0d2daad3a562f873355f8 /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem
parentbb85b552e19cff27de0be2a3b41ea0aa26514395 (diff)
Fixed 'Bug 55476 - TypeSystem task loop'
That makes the work around with adding/removing event handlers obsolete. That didn't really work because the event was triggered on UI thread.
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService_WorkspaceHandling.cs12
1 files changed, 7 insertions, 5 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService_WorkspaceHandling.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService_WorkspaceHandling.cs
index 3e3c656480..98fb53d313 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService_WorkspaceHandling.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService_WorkspaceHandling.cs
@@ -112,16 +112,16 @@ namespace MonoDevelop.Ide.TypeSystem
}
}
- internal static async Task<List<MonoDevelopWorkspace>> Load (WorkspaceItem item, ProgressMonitor progressMonitor, CancellationToken cancellationToken = default(CancellationToken))
+ internal static async Task<List<MonoDevelopWorkspace>> Load (WorkspaceItem item, ProgressMonitor progressMonitor, CancellationToken cancellationToken = default (CancellationToken), bool showStatusIcon = true)
{
using (Counters.ParserService.WorkspaceItemLoaded.BeginTiming ()) {
var wsList = new List<MonoDevelopWorkspace> ();
//If we want BeginTiming to work correctly we need to `await`
- return await InternalLoad (wsList, item, progressMonitor, cancellationToken).ContinueWith (t => { t.Wait (); return wsList; });
+ return await InternalLoad (wsList, item, progressMonitor, cancellationToken, showStatusIcon).ContinueWith (t => { t.Wait (); return wsList; });
}
}
- static Task InternalLoad (List<MonoDevelopWorkspace> list, MonoDevelop.Projects.WorkspaceItem item, ProgressMonitor progressMonitor, CancellationToken cancellationToken = default(CancellationToken))
+ 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;
@@ -138,14 +138,16 @@ namespace MonoDevelop.Ide.TypeSystem
lock (workspaceLock)
workspaces = workspaces.Add (workspace);
list.Add (workspace);
- workspace.ShowStatusIcon ();
+ 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);
- workspace.HideStatusIcon ();
+ if (showStatusIcon)
+ workspace.HideStatusIcon ();
}
}
});