Excel.Application.SelectionChange只触发一次

我只收到第一个事件通知,之后什么也没有发生。 有任何想法吗?
UPD:我发现了一件奇怪的事情。 我的事件处理程序代码如下所示:

var cell = range.Cells[1, 1]; var rangeName = cell.Address[false, false, XlReferenceStyle.xlA1, Type.Missing, Type.Missing]; 

我已经这样改变它,添加显式types转换:

  var cell = (Range)range.Cells[1, 1]; var rangeName = cell.Address[false, false, XlReferenceStyle.xlA1, Type.Missing, Type.Missing]; 

而现在我的事件处理程序被调用了几次,然后才停止调用。

由于COM Interop跟踪事件处理程序的方式,垃圾收集器可以清理RCW,从而阻止您接收事件。

请确保您保留对具有事件处理程序的对象的引用,例如,而不是写入:

 Application.CurrentWorkbook.SelectionChanged += .... 

 class ThisAddin { WorkBook _workbook; void AddinLoaded() { _workbook.SelectionChanged += .... } }