loading .net assemblies takes a long time

Posted by jmls on 05-Jun-2012 01:52

We have a machine that seems to take forever (in reality, about 4 minutes) for the "Powered by Progress" splashscreen to appear after double-clicking on the icon

In the .pf file, we have the -preloadCLR option set. If this is removed, then the splashscreen appears immediately.

However (there's always a however!) the system then freezes for about 4 minutes when the first .net control is referenced so it seems to me that the problem lies with the loading of the .net runtime or assembly or something.

Anyone else had this issue (searching for preloadCLR on the kb only gives one result!)

Thanks!

All Replies

Posted by olivier.dunemann on 05-Jun-2012 03:39

My two cents...

We have something quite similar, although maybe not related.

Several users have multiple display devices. In order to know on which device an ABL window is located, we have written the here-below UDF.

If the user has multiple display, then the very first time (in a  session) the function is invoked, the "NEW  System.Drawing.Rectangle(...)" takes about 10s to complete.

If the user has a single display device, no problem, no delay.

FUNCTION fct_getSchermType_c RETURNS CHAR ( pi_window AS HANDLE ):
/*------------------------------------------------------------------------------
   Purpose:   
   Parameters: 
   Notes:     
------------------------------------------------------------------------------*/
    DEF VAR c_schermType AS CHAR NO-UNDO.
    DEF VAR cls_bounds   AS System.Drawing.Rectangle NO-UNDO.
    DEF VAR cls_rect     AS System.Drawing.Rectangle NO-UNDO.

    cls_rect = NEW System.Drawing.Rectangle(pi_window:X
                                           ,pi_window:Y
                                           ,pi_window:WIDTH-PIX
                                           ,pi_window:HEIGHT-PIX).
    /* Retrieves the bounds of the display that contains the largest portion of the specified control */
    cls_bounds = System.Windows.Forms.Screen:GetBounds(cls_rect).

    c_schermType = SUBSTITUTE("&1/&2":U
                             ,cls_bounds:Width
                             ,cls_bounds:Height).

    DELETE OBJECT cls_bounds.
    DELETE OBJECT cls_rect.

    RETURN c_schermType.
END FUNCTION.

Posted by egarcia on 05-Jun-2012 10:01

How many assemblies are listed in the assemblies.xml file?

Are all of them required by the application?

I hope this helps.

Posted by jmls on 07-Jun-2012 14:35

and with a couple of shakes of the old chicken bones, turning anti-clockwise several times muttering "opendge is great. All hail openedge" and a sacrifice of my first-born

it now all works fine ...

Posted by gus on 08-Jun-2012 08:43

You must have been drinking the wrong kind of beer before.

Posted by jmls on 20-Jun-2012 09:16

If I wasn't then, I have been since

[I was over in some island owned by Finland but run by Swedes last week]

This thread is closed