@@ -153,7 +153,9 @@ public void Startup()
153
153
#region sink handlers. todo: move to another class
154
154
async void sink_ProjectRemoved ( object sender , DispatcherEventArgs < VBProject > e )
155
155
{
156
- _vbe . Events . ReferencesEvents [ e . Item ] . ItemAdded -= ReferencesEvents_ItemAdded ;
156
+ var sink = ( VBProjectsEventsSink ) sender ;
157
+ _componentsEventSinks . Remove ( sink ) ;
158
+ _referencesEventsSinks . Remove ( sink ) ;
157
159
_parser . State . RemoveProject ( e . Item ) ;
158
160
159
161
Debug . WriteLine ( string . Format ( "Project '{0}' was removed." , e . Item . Name ) ) ;
@@ -167,8 +169,15 @@ async void sink_ProjectRemoved(object sender, DispatcherEventArgs<VBProject> e)
167
169
}
168
170
}
169
171
172
+ private readonly IDictionary < VBProjectsEventsSink , VBComponentsEventsSink > _componentsEventSinks =
173
+ new Dictionary < VBProjectsEventsSink , VBComponentsEventsSink > ( ) ;
174
+
175
+ private readonly IDictionary < VBProjectsEventsSink , ReferencesEventsSink > _referencesEventsSinks =
176
+ new Dictionary < VBProjectsEventsSink , ReferencesEventsSink > ( ) ;
177
+
170
178
async void sink_ProjectAdded ( object sender , DispatcherEventArgs < VBProject > e )
171
179
{
180
+ var sink = ( VBProjectsEventsSink ) sender ;
172
181
_parser . State . AddProject ( e . Item ) ;
173
182
174
183
if ( ! _parser . State . AllDeclarations . Any ( ) )
@@ -193,10 +202,12 @@ async void sink_ProjectAdded(object sender, DispatcherEventArgs<VBProject> e)
193
202
componentsSink . ComponentRemoved += sink_ComponentRemoved ;
194
203
componentsSink . ComponentRenamed += sink_ComponentRenamed ;
195
204
componentsSink . ComponentSelected += sink_ComponentSelected ;
205
+ _componentsEventSinks . Add ( sink , componentsSink ) ;
196
206
197
207
var referencesSink = new ReferencesEventsSink ( ) ;
198
208
referencesSink . ReferenceAdded += referencesSink_ReferenceAdded ;
199
209
referencesSink . ReferenceRemoved += referencesSink_ReferenceRemoved ;
210
+ _referencesEventsSinks . Add ( sink , referencesSink ) ;
200
211
201
212
int cookie ;
202
213
connectionPoint . Advise ( componentsSink , out cookie ) ;
0 commit comments