2008-12-28 86 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