internal void Initialize(SAPbouiCOM.Application inApplication, SAPbobsCOM.Company inCompany) { Application = inApplication; Company = inCompany; }
public static ISboAddon Create(string nameSpace, string name, SAPbouiCOM.Application inApplication, SAPbobsCOM.Company inCompany) { if (Instance != null) { throw new Exception("Addon instance already exists"); } var _addon = new SboAddon(nameSpace, name); Instance = _addon; _addon.Initialize(inApplication, inCompany); _addon.Events.Initialize(); _addon.SetUiLanguage(); _addon.Application.AppEvent += type => { Logger.Info("Application event triggered: {0}", type); switch (type) { case BoAppEventTypes.aet_ShutDown: break; case BoAppEventTypes.aet_CompanyChanged: break; case BoAppEventTypes.aet_LanguageChanged: _addon.SetUiLanguage(); break; case BoAppEventTypes.aet_ServerTerminition: break; case BoAppEventTypes.aet_FontChanged: break; default: throw new ArgumentOutOfRangeException("type"); } }; var testUiConnection = new Action(async() => { while (true) { try { var appId = Instance.Application.AppId; await Task.Delay(TimeSpan.FromSeconds(15 + (appId * 0))); } catch (Exception) { Logger.Info("Lost connection to application. Exiting."); Environment.Exit(1); } } }); Task.Factory.StartNew(testUiConnection, CancellationToken.None, TaskCreationOptions.None, Instance.UiTaskScheduler); Instance.LastEvent = DateTime.Now; return(Instance); }