Luca Poalini

Luca Poalini

  • 2.1k
  • 19
  • 3.7k

COM object event handling problem with late binding

Jan 8 2015 10:32 AM

Hi all,

I'm developping a C# COM object with event that I must handle in my application.

If I add the COM object in the application's References all work fine but if I use the COM object with late binding I don't receive the event.

The code relative to the interface is:

 

 [Guid("CA2F7751-32F3-4E87-BC88-CC99F4186A09"),

        InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]

    public interface ER755COM_Events

    {

        [DispId(5)]

        void OnReceiveDataEvent(string args);

    }

   

    [Guid("94E7D0FD-2627-4D37-90A5-D8F7A01B4D41"),

        ClassInterface(ClassInterfaceType.AutoDispatch),

        ComSourceInterfaces(typeof(ER755COM_Events))]

    public class ER755 : ER755COM_Interface

    {

        ….

        public delegate void OnReceiveDataEventHandler(string args);       

        public event OnReceiveDataEventHandler OnReceiveDataEvent;

 

       ….

        ….

 

        if (OnReceiveDataEvent != null)

           {

               Console.WriteLine("OnDataReceive calling OnReceiveDataEvent");

               OnReceiveDataEvent(CardID);

           }

        ….

 

    }

 

 

And the code in the application is:

 

       

 

 

 

[ComImport, Guid("CA2F7751-32F3-4E87-BC88-CC99F4186A09")]

class ER755

{

}

 

public delegate void OnReceiveDataEventHandler(string args);

 

System.Type objType;

dynamic comObject;

 

…..

objType = System.Type.GetTypeFromProgID("ER755.ER755");

comObject = System.Activator.CreateInstance(objType);

comObject.OnReceiveDataEvent += new OnReceiveDataEventHandler(OnMyReceiveDataEventHandler);

…..

 

Any suggestions?

Thanks in advance


Answers (18)