class ATL_NO_VTABLE CMode :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMode, &CLSID_Mode>,
public IConnectionPointContainerImpl<CMode>,
public CProxy_IModeEvents<CMode>,
public IDispatchImpl<IMode, &IID_IMode, &LIBID_OgreCommonLib, /*wMajor =*/ 1, /*wMinor =*/ 0>本人在com里的连接点有个方法OutNum(int a)
当COM内部运行触发某事件时
CMode *pMode;
pMode->Fire_OutNum(333);请问在C#中怎么调用这个连接点啊?我是这样写的
private void Form1_Load(object sender, EventArgs e)
        {         
            Mode pMode = new Mode();
            pMode.OutNum += new _IModeEvents_OutNumEventHandler(pMode_OutNum);
           
        }
        static void pMode_OutNum(int bb)
        {
            MessageBox.Show(bb.ToString());
            return;
        }
出错!!下面一种方式运行正确
在COM中的一个接口调用Fire_OutNum()STDMETHODIMP CMode::BBBBB()
{
// TODO: 在此添加实现代码
Fire_OutNum(333);
return S_OK;
}C#中写sinkpublic class CSink : _IModeEvents
{
       public void OutNum(int a)
        {
            MessageBox.Show(a.ToString());
            return;
        }
    
}
调用
private void panel1_Click(object sender, EventArgs e)
        {     
                CSink pSink = new CSink();
                Mode pky = new Mode();
                pky.OutNum += pSink.OutNum;
                pky.BBBBB();
                pky.OutNum -= pSink.OutNum;
       
        }这个是可以的。明显这样子是我点击调用COM的外部程序触发了Fire_OutNum(),
而本人要的是COM内部去触发Fire_OutNum(),然后外部调用者做出反应。我该怎么做 怎么做 怎么做~~~~~~