From dc316490b385fed0d6d06f0e53c2b48bb3c356ed Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sun, 5 Jan 2014 22:23:05 +0100 Subject: [PATCH] HACK: eagerly load output pad because pad services cannnot be instanciated from background threads. A proper fix would be to separate the IOutputPad implementation from the UI, so that output categories can be created and written to from background threads without waiting for the output pad UI to be created. --- .../Project/Src/AddInTree/AddIn/DefaultDoozers/ServiceDoozer.cs | 1 + src/Main/SharpDevelop/Workbench/WorkbenchStartup.cs | 1 + 2 files changed, 2 insertions(+) diff --git a/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/ServiceDoozer.cs b/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/ServiceDoozer.cs index f704dafaa9..cc240839a9 100644 --- a/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/ServiceDoozer.cs +++ b/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/ServiceDoozer.cs @@ -37,6 +37,7 @@ namespace ICSharpCode.Core // Use ServiceCreatorCallback to lazily create the service container.AddService( interfaceType, delegate { + // This callback runs within the service container's lock if (serviceLoading) throw new InvalidOperationException("Found cyclic dependency when initializating " + className); serviceLoading = true; diff --git a/src/Main/SharpDevelop/Workbench/WorkbenchStartup.cs b/src/Main/SharpDevelop/Workbench/WorkbenchStartup.cs index dc037aa46c..5407630b9a 100644 --- a/src/Main/SharpDevelop/Workbench/WorkbenchStartup.cs +++ b/src/Main/SharpDevelop/Workbench/WorkbenchStartup.cs @@ -47,6 +47,7 @@ namespace ICSharpCode.SharpDevelop.Workbench UILanguageService.ValidateLanguage(); + SD.GetService(); // HACK: eagerly load output pad because pad services cannnot be instanciated from background threads TaskService.Initialize(); Project.CustomToolsService.Initialize();