.NET / COM事件互操作性

时间:2008-12-28 23:27:09

标签: c# .net com interop com-interop

我有一个由TlbImp.exe生成的互操作程序集,生成的类很严重,性能非常重要。

但是有一个问题,事件似乎是以这样的方式注册/取消注册/调用,即使是空的事件处理程序也被计入。 给定一组 1..N 事件,当您向事件3注册处理程序时,它看起来像这样:

{dummy1, dummy2, eventHandler3, dummy4 ... dummyN}

当很多事件经常被引发时,会产生很大的开销。

所以问题是,有没有更好的方法如何在.NET中使用COM事件?我是否需要从头开始重写互操作程序集的事件代码?

2 个答案:

答案 0 :(得分:0)

为什么不通过执行Using语句来允许.NET构建互操作?

除非您明确设置事件,否则不应调用任何事件。

示例:

http://code.msdn.microsoft.com/SEHE

如您所见,上面的示例设置了许多事件。

答案 1 :(得分:0)

使用自定义Advise / Unadvise callbakcs解决。