Optimizacion de memoria - conexion DI API

Estimados buenas tardes, estoy teniendo mucho consumo de ram cuando me conecto al DI API, por solo conectarme tengo (240 MB) por usuario. como puedo hacer para optimizarlo …

    static void Main(string[] args)
    {
        ConexionUIAPI();
        ConexionSingleSignOn();
        SBO_Application.StatusBar.SetText("Addon Despacho Iniciado Correctamente", BoMessageTime.bmt_Medium, BoStatusBarMessageType.smt_Success);
        // Cliclo para leer todos los eventos de tipo itemeven
        minimizeMemory();
        SBO_Application.ItemEvent += new SAPbouiCOM._IApplicationEvents_ItemEventEventHandler(SBO_Application_ItemEvent);
        System.Windows.Forms.Application.Run();
        
    }

    public static void ConexionSingleSignOn()
    {
        oCompany = new SAPbobsCOM.Company();
        string sCookie = oCompany.GetContextCookie();
        string SConn = SBO_Application.Company.GetConnectionContext(sCookie);
        try
        {
            int error = oCompany.SetSboLoginContext(SConn);
            if (error == 0)
            {
                oCompany.Connect();
                SBO_Application.StatusBar.SetText("Exito - en la conexion DI API", BoMessageTime.bmt_Medium, BoStatusBarMessageType.smt_Success);
            }
            else
            {
                SBO_Application.StatusBar.SetText("Error - en la conexion DI API", BoMessageTime.bmt_Medium, BoStatusBarMessageType.smt_Error);
            }
        }
        catch (Exception ex)
        {
            SBO_Application.StatusBar.SetText("Error General - " + ex.ToString(), BoMessageTime.bmt_Medium, BoStatusBarMessageType.smt_Error);
        }
        finally
        {
            sCookie = null;
            SConn = null;

        }

    }

Hola @Fer_Munoz
yo utilizo esta función para la coneccion.

        private void connectSap()
        {
            string strconnect = null;
            SAPbouiCOM.SboGuiApi oGuiApi = null;
            try
            {
                if (!Environment.GetCommandLineArgs().GetValue(1).Equals(""))
                {
                    if (!Environment.GetCommandLineArgs()[1].Equals(""))
                    {
                        asm = GetType().Assembly;
                        strconnect = Environment.GetCommandLineArgs()[1].ToString();
                        oGuiApi = new SAPbouiCOM.SboGuiApi();
                        oGuiApi.Connect(strconnect);
                        oAPP = oGuiApi.GetApplication();
                        oCompany = (SAPbobsCOM.Company)oAPP.Company.GetDICompany();
                    }

                }
                else
                {
                    asm = GetType().Assembly;
                    strconnect = "0030002C0030002C00530041005000420044005F00440061007400650076002C0050004C006F006D0056004900490056";
                    oGuiApi = new SAPbouiCOM.SboGuiApi();
                    oGuiApi.Connect(strconnect);
                    oAPP = oGuiApi.GetApplication();
                    oCompany = (SAPbobsCOM.Company)oAPP.Company.GetDICompany();
                }

            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show("Error ConnectSap Add-On: " + asm.GetName().Name + " " + ex.Message.ToString() + " " + ex.StackTrace.ToString());
            }
        }
2 Me gusta

Gracias eduardo, ahora lo voy a probar. Creo que utilizando el GetDICompany(), consume menos

Estimado la varibale asm que tipo de objeto es?

Buenas a todos
Les recomiendo primero usar la librería SAPBusinessOneSDK.dll y no las referencias COM antiguas SAPbobsCOM y SAPbouiCOM.

Esta es la conexión que uso para todos mis addons.

SAPbouiCOM.Framework.Application oApp = null;
if (args.Length < 1)
{
	oApp = new SAPbouiCOM.Framework.Application();
}
else
{
	oApp = new SAPbouiCOM.Framework.Application(args[0]);
}

sbo_application = SAPbouiCOM.Framework.Application.SBO_Application;
sbo_company = (SAPbobsCOM.Company)sbo_application.Company.GetDICompany();
1 me gusta

Buenisimo gracias felipe

Es un assembly de la libreria system.reflection, la utilizo para que me muestre el nombre del add-On en los mensajes, ya que habeces se encuentran varios add-ons en el sistema y afectan documentos en común.

1 me gusta

Este tema se cerró automáticamente 7 días después de la última publicación. No se permiten nuevas respuestas.