question

Upvotes
Accepted
42 4 4 6

How to use set_Usertag with AdxRtList?

Hello!

How to use UserTags? I'm working on application that will be used by many users, so they can request AdxRtList.StartUpdates almost simultaneously, so I need to know what RICs was in request to process adxRtList_OnImage.

I wrote this

stringArray.Add("XAUFIXAM=");
                AdxRtList.Source = "IDN";
                string[] stringArr = stringArray.ToArray();
                AdxRtList.RegisterItems(stringArr, "TRDPRC_1");
                AdxRtList.set_UserTag("req_id", i.ToString(), stringArr);
                AdxRtList.StartUpdates(RT_RunMode.RT_MODE_IMAGE);

but I'm getting error "AdxRtList : invalid item req_id"

eikoneikon-com-api
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.

Upvotes
Accepted
39.4k 77 11 27

You don't need to use a separate instance of AdxRtList for each request. If you need to retrieve a bunch of RICs, then another bunch and another bunch, you can call RegisterItems and StartUpdates methods for the same object as many times as you need. To find out what RICs have been registered in the instance of AdxRtList object use ListItems method. You can call ListItems method from the callback for OnImage event, this way you know what RICs this instance of the object has requested or retrieved. To remove RICs from AdxRtList object use UnregisterItems or InregisterAllItems methods.

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.

Upvotes
42 4 4 6

Users send requests via the table in database, and my application scans this table for non processed requests. So there can be 1 or 10 or 50 requests. And I want to process them all, so I need to create one instance of AdxRtList per 1 request. I did this:

List<AdxRtList> adxList = new List<AdxRtList>();
            List<string> stringArray = new List<string>();
            stringArray.Add(VAR1);
            for (int i = 0; i<10; i++) {
                adxList.Add(MyEikonDesktopDataAPI.CreateAdxRtList());
                adxList[i].OnImage += new IAdxRtListEvents_OnImageEventHandler(adxRtList_OnImage);
                adxList[i].Source = "IDN";
                string[] stringArr = stringArray.ToArray();
                adxList[i].RegisterItems(stringArr, VAR2);
                adxList[i].StartUpdates(RT_RunMode.RT_MODE_IMAGE);
            }

can I use Usertag to identity what adxList is in adxRtList_OnImage. How I can process it here

void adxRtList_OnImage(RT_DataStatus a_itemStatus)
        {
            //use item name to get the data
            string a_itemName = "XAUFIXAM=";
            object temp = AdxRtList.get_ListFields(a_itemName, RT_FieldRowView.RT_FRV_ALL, RT_FieldColumnView.RT_FCV_VALUE);
            object[,] l_fields = (object[,])Convert.ChangeType(temp, typeof(object[,]));
            label5.Text = a_itemName + ": " + l_fields[0, 1];
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.

Upvotes
42 4 4 6

Or there any other way to process many different requests?

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.

Upvotes
4.6k 26 7 22

You can create your own wrapper around AdxRtList that can carry additional information. In my opinion that would be the correct path to pursue.

On a separate note, I would like to remind you that all the content that is extracted with the desktop APIs should stay on the desktop, otherwise you may be breaking the licence.

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.

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.