public RunningDocumentTableEventTracker( IThreadingContext threadingContext, IVsEditorAdaptersFactoryService editorAdaptersFactoryService, IVsRunningDocumentTable runningDocumentTable, IRunningDocumentTableEventListener listener ) { Contract.ThrowIfNull(threadingContext); Contract.ThrowIfNull(editorAdaptersFactoryService); Contract.ThrowIfNull(runningDocumentTable); Contract.ThrowIfNull(listener); _foregroundAffinitization = new ForegroundThreadAffinitizedObject( threadingContext, assertIsForeground: false ); _runningDocumentTable = (IVsRunningDocumentTable4)runningDocumentTable; _editorAdaptersFactoryService = editorAdaptersFactoryService; _listener = listener; // Advise / Unadvise for the RDT is free threaded past 16.0 ((IVsRunningDocumentTable)_runningDocumentTable).AdviseRunningDocTableEvents( this, out _runningDocumentTableEventsCookie ); }