我正在编写VSIX,以从当前“编辑器焦点”的类成员获取信息。 为此,我附加了 IWpfTextView.Selection.SelectionChanged事件,如下所示:
IWpfTextView lastTextView;
EventHandler SelectionEventHandler;
private void AttachToActiveWindow()
{
if (dte.ActiveDocument != null && dte.ActiveDocument.Kind == DOCUMENT_KIND_GUID)
{
if (lastTextView != null)
{
lastTextView.Selection.SelectionChanged -= SelectionEventHandler;
}
lastTextView = TextViewHelper.GetActiveTextView();
lastTextView.Selection.SelectionChanged += SelectionEventHandler;
}
}
为了避免内存泄漏,如果活动文档发生更改,我必须取消该事件。
到目前为止,一切正常。但是,当我切换到第一个附加的文档,并再次将我附加到 SelectionChanged 事件时,它将无法正常工作。当我切换到我已经附加到的文档时,不会抛出 SelectionChanged 事件。
有人知道这是什么问题吗?