2008-12-28 163 views
0

我有TLBIMP.EXE生成的互操作程序集,生成的类都严重事件触发,性能是非常重要的。.NET/COM互操作的事件

但是有一个问题,这些事件似乎要注册/未注册/调用中,即使是空的事件处理程序在计算这样的方式。 给定一组1..1事件,当您注册一个处理程序一个事件3它看起来像这样:

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

时,有很多是引起人们的关注常常事件产生一个大的开销。

所以现在的问题是,是否有更好的方法如何在.NET COM事件工作?任何工具或其他东西或我必须从头开始重写interop程序集的事件代码?

+0

你能提供代码样本给我们在我们的机器上重现问题吗? – 2008-12-29 06:42:07

回答

0

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

0

为什么不干脆让.NET来构建做Using语句互操作?

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

例子:

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

正如你可以看到上面的例子设置的许多事件。

+0

为你调用TlbImp.exe。这种方式非常缓慢,因为它为每个定义事件的类型创建了SinkHelper。 – arul 2008-12-30 09:25:18