因此,当我在一个嵌入式场景中使用WorkbookOpen事件时遇到了一个问题:它是一个记录良好的问题:
我不仅需要IConnectionSink,还要在作为参数传递的每个工作簿对象上调用Marshal.ReleaseComObject。
public class ExcelAppEventSink : Excel.AppEvents
{
... other functions ...
public void WorkbookOpen(Excel.Workbook Wb)
{
<-- operate on workbook -->
Marshal.ReleaseComObject(Wb);
}
... other functions ...
}
但微软公司发布的另一篇博文在2年后发布声称Marshal.ReleaseComObject很危险。 https://blogs.msdn.microsoft.com/visualstudio/2010/03/01/marshal-releasecomobject-considered-dangerous/
因为我只需要发布RCWs 2016年就更安全了 而是在函数调用结束时CleanupUnusedObjectsInCurrentContext?
额外的阅读材料: