Skip to content

Commit 9270b63

Browse files
authored
Merge pull request #1920 from Hosch250/Issue1843
Cancel parses before removing/renaming projects/components to prevent…
2 parents 2a3003c + c39f8f8 commit 9270b63

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

RetailCoder.VBE/App.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,8 @@ async void sink_ProjectRemoved(object sender, DispatcherEventArgs<VBProject> e)
225225
return;
226226
}
227227

228+
_parser.Cancel();
229+
228230
var projectId = e.Item.HelpFile;
229231
Debug.Assert(projectId != null);
230232

@@ -334,6 +336,8 @@ async void sink_ComponentRenamed(object sender, DispatcherRenamedEventArgs<VBCom
334336
return;
335337
}
336338

339+
_parser.Cancel();
340+
337341
_sourceControlPanelVM.HandleRenamedComponent(e.Item, e.OldName);
338342

339343
_logger.Debug("Component '{0}' was renamed to '{1}'.", e.OldName, e.Item.Name);
@@ -389,6 +393,8 @@ async void sink_ComponentRemoved(object sender, DispatcherEventArgs<VBComponent>
389393
return;
390394
}
391395

396+
_parser.Cancel(e.Item);
397+
392398
_sourceControlPanelVM.HandleRemovedComponent(e.Item);
393399

394400
_logger.Debug("Component '{0}' was removed.", e.Item.Name);
@@ -404,6 +410,8 @@ async void sink_ComponentReloaded(object sender, DispatcherEventArgs<VBComponent
404410
return;
405411
}
406412

413+
_parser.Cancel(e.Item);
414+
407415
_logger.Debug("Component '{0}' was reloaded.", e.Item.Name);
408416
_parser.State.OnParseRequested(sender, e.Item);
409417
}
@@ -445,6 +453,8 @@ async void sink_ProjectRenamed(object sender, DispatcherRenamedEventArgs<VBProje
445453
return;
446454
}
447455

456+
_parser.Cancel();
457+
448458
_logger.Debug("Project '{0}' (ID {1}) was renamed to '{2}'.", e.OldName, e.Item.HelpFile, e.Item.Name);
449459

450460
_parser.State.RemoveProject(e.Item.HelpFile);
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
using System;
2+
using Microsoft.Vbe.Interop;
23
using Rubberduck.Parsing.VBA;
34

45
namespace Rubberduck.Parsing
56
{
67
public interface IRubberduckParser : IDisposable
78
{
89
RubberduckParserState State { get; }
10+
void Cancel(VBComponent component = null);
911
}
1012
}

0 commit comments

Comments
 (0)