我有一個COM Callable Wrapper,我使用VB6程序,但程序不會收到COM事件,除非CCW已註冊。否則,CCW會正常工作,除非我刪除程序的清單文件並使用「regasm/tlb/codebase theccw.dll」註冊CCW,否則不會發生任何事件。這是在WinXP SP3中。.Net CCW沒有免註冊COM的事件!
可能是什麼問題?
也許我的CCW被錯誤地用作「早期綁定」的VB6對象。以下是我的申明:
[ComVisible(false)]
public delegate void AnEventDelegate(int arg1);
[
ComVisible(true),
GuidAttribute("XXXX-XXXX-XXXX-XXXX"),
InterfaceType(ComInterfaceType.InterfaceIsIDispatch)
]
public interface IComEvents
{
void AnEvent(int arg1);
}
[
ComVisible(true),
Guid("YYYY-YYYY-YYYY-YYYY"),
ClassInterface(ClassInterfaceType.None),
ComSourceInterfaces(typeof(IComEvents))
]
public class TheComClass: IComContract
{
public TheComClass(){}
// Implicit implementation of IComContract.
// Implicit implementation of IComEvents.
//
// eg. public event AnEventDelegate AnEvent;
}
[
ComVisible(true),
Guid("ZZZZ-ZZZZ-ZZZZ-ZZZZ")
]
public interface IComContract
{
[ComVisible(true)]
string AProp{ get; set; }
[ComVisible(true)]
void AMethod();
}
我剛剛意識到的一件事。我在TheComClass的公共事件聲明中沒有[ComVisible(true)]屬性。我不認爲這是問題,因爲我確實在事件被註冊時得到事件,但我們會看到...
你知道我在哪裏可以閱讀更多關於此? – 2009-01-15 09:44:35