我有一个由TlbImp.exe生成的互操作程序集,生成的类很严重,性能非常重要。
但是有一个问题,事件似乎是以这样的方式注册/取消注册/调用,即使是空的事件处理程序也被计入。 给定一组 1..N 事件,当您向事件3注册处理程序时,它看起来像这样:
{dummy1, dummy2, eventHandler3, dummy4 ... dummyN}
当很多事件经常被引发时,会产生很大的开销。
所以问题是,有没有更好的方法如何在.NET中使用COM事件?我是否需要从头开始重写互操作程序集的事件代码?
答案 0 :(得分:0)
为什么不通过执行Using语句来允许.NET构建互操作?
除非您明确设置事件,否则不应调用任何事件。
示例:
http://code.msdn.microsoft.com/SEHE
如您所见,上面的示例设置了许多事件。
答案 1 :(得分:0)
使用自定义Advise
/ Unadvise
callbakcs解决。