1 1 1 2

Exception while calling CreateRData on Dex2.RData


I am implementing the 'Dex2Example' example and the code throws an exception while trying to retrieve the data. While I can retrieve data using the form, as soon as trigger the CreateRData as a console application it throws the said exception:

An exception of type 'System.InvalidCastException' occurred in e_webservice.exe but was not handled in user code. 

It's not possible to associate an object COM of type 'System.__ComObject' to the interface 'Dex2.IDex2Mgr3'. This operation has failed because the call QueryInterface in the COM component (...) RESULT: 0x80004002 (E_NOINTERFACE)

The excpetion is thrown on the line

MyRData = MyDex2Mgr.CreateRData(MyDex2Cookie);

mydex2cookie value is 1 and the connection status is 'suceeded'.

The MyDex2Mgr initialization is as follows:

 public void CreateDex2Mgr()
            // Create the Dex2 manager
            MyDex2Mgr = MyEikonDesktopDataAPI.CreateDex2Mgr();

            // Initialize the Dex2 manager and retrieve a session cookie
            if (MyDex2Mgr != null)
                MyDex2Cookie = (MyDex2Mgr as IDex2Mgr2).Initialize(DEX2_MetadataCaller.DE_MC_ADC_UNKNOWN);



icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

1 Answer

· Write an Answer
4.6k 26 7 22

Hi @duarte_quintelauarte, there are a few things that you should do to make sure that your code will work just fine in the console application:

  • make sure that your console app is running in the single-threaded apartment mode, you can add [STAThread] attribute to your static void Main() method;
  • since the API is COM, you will need to run the event loop manually, as it is not present in the console apps; the easiest way is to reference the WindowsBase.dll assembly, and add the following routine to your class Program:
#region Dispatcher
        public static DispatcherFrame Frame; //the object is required in order to release the Windows message pump while executing asynchronous calls.

        public static void PushDispatcherFrame()

        public static void StopMessagePump()
            Frame.Continue = false;
            Frame = null;

        public static DispatcherFrame GetDispatcherFrame()
            return Frame ?? (Frame = new DispatcherFrame());
  • after you have done this, you will need to call Program.PushDispatcherFrame() manually every time you execute any calls, and Program.StopMessagePump() when you receive a result;

Let me know if it works.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Hello @Zhenya_Kovalyov

I've implemented the Dispatcher Frames method and the [STAThread] attribute on the main function.

Now, I've got another error on

MyDex2Cookie = (MyDex2Mgr as IDex2Mgr2).Initialize(DEX2_MetadataCaller.DE_MC_ADC_UNKNOWN);

The exception is as follows:

An unhandled exception of type 'System.Runtime.InteropServices.COMException' in eikon.exe

Class not registered (Exception from HRESULT: 0x80040154

I have the following dll's referenced in my project:

- Interop.Dex2

- Interop.EikonDesktopDataAPI

Thank you for your time,


It still looks as if you are activating and using the object in different threads. Could you drop me an email at and we can have a look at your code together.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.