Excel のイベントにアタッチしたらちゃんとデタッチすること

ExcelC# から操作する際に、Excel のイベントを捕まえたいからといって、C# の側で、

private Microsoft.Office.Interop.Excel.Workbook workbook;
...
workbook.SheetChange += new Microsoft.Office.Interop.Excel.WorkbookEvents_SheetChangeEventHandler(workbook_SheetChange);

のようにアタッチしたら、C# のアプリケーションが終了するまでにかならず、

workbook.SheetChange -= new Microsoft.Office.Interop.Excel.WorkbookEvents_SheetChangeEventHandler(workbook_SheetChange);

のようにデタッチすること。
これをやらないと、Excel の内部自体ですでにワークシートの SheetChange イベントが起こらなくなるようだ。ExcelVBA で SheetChange イベントハンドラーを作ってもイベントが起こらずそのイベントハンドラーすら呼ばれない。
この状態で C# から再度アタッチしても、イベントを捕まえることもできない。