在C#中调用COM对象,此COM对象有两个事件,如果对两个事件赋值时,第二个就会出异常,对换位置也是第二个出异常,如果只对一下赋则正常。请问这是为什么呢?COM对象是用Delphi写的,在Delphi中都能正常调用。就是下面两句,就是第二句是总出异常。
p.Progress += new IMyObjEvents_ProgressEventHandler(OnProgressFired);
p.Complete += new IMyObjEvents_CompleteEventHandler(OnCompleteFired);

解决方案 »

  1.   

    在MSDN上查到用这种方式可以解决,可是让我纳闷的是为什么在m_oConnectionPoint.Advise(this,out m_Cookie);这一句上总是出现“Specified cast is not valid.”异常呢?有没有那位大虾遇见过这种问题呢?private UCOMIConnectionPoint m_oConnectionPoint;
    private int m_Cookie;
    private PowerPoint.ApplicationClass oPPT;
    private void button1_Click(object sender, System.EventArgs e)
    {
    // QI for IConnectionPointContainer.
    UCOMIConnectionPointContainer oConnPointContainer = (UCOMIConnectionPointContainer) oPPT;
    // Get the GUID of the EApplication interface.
    Guid guid=typeof(PowerPoint.EApplication).GUID; // Find the connection point.
    oConnPointContainer.FindConnectionPoint(ref guid,out m_oConnectionPoint);
    // Call Advise to sink up the connection.
    m_oConnectionPoint.Advise(this,out m_Cookie);
    }