diff --git a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlParser.cs b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlParser.cs index d056ffac3d..1423a1e7aa 100644 --- a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlParser.cs +++ b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlParser.cs @@ -91,8 +91,8 @@ namespace ICSharpCode.XamlBinding public ICompilationUnit Parse(IProjectContent projectContent, string fileName, ITextBuffer fileContent) { - //using (new DebugTimerObject("background parser")) { - // Core.LoggingService.Info("file: " + fileName); + ICompilationUnit compilationUnit; + using (ParseAndLock(fileContent)) { var document = parser.LastDocument; @@ -101,9 +101,9 @@ namespace ICSharpCode.XamlBinding document.AcceptVisitor(visitor); - return visitor.CompilationUnit; + compilationUnit = visitor.CompilationUnit; } - //} + // During project load all XAML files are parsed // most of them are not opened, thus fileContent.Version is null. // We can clear the parser data, because the file will be reparsed @@ -119,6 +119,8 @@ namespace ICSharpCode.XamlBinding } parser.Lock.ExitWriteLock(); } + + return compilationUnit; } /// diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Xml/AXmlParser.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Xml/AXmlParser.cs index 9af6b4cacf..a068bb8b77 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Xml/AXmlParser.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Xml/AXmlParser.cs @@ -175,6 +175,10 @@ namespace ICSharpCode.AvalonEdit.Xml } } + /// + /// Clears the parser data. + /// + /// No write lock is held by the current thread. public void Clear() { if (!Lock.IsWriteLockHeld)