public static void PerformAction(string module, string method) { MachineInstance.Current.PrepareThread(_globalEnv); ApplicationDbContext dbContext = null; try { dbContext = _dbBridge?.CreateContext(); // TODO Сделать нормальный наконец способ доступа к ИБ if (DatabaseExtensions.Infobase != null) { DatabaseExtensions.Infobase.DbContext = dbContext; } var scriptObject = (IRuntimeContextInstance)_globalEnv.GetGlobalProperty(module); var methodId = scriptObject.FindMethod(method); scriptObject.CallAsProcedure(methodId, new IValue[0]); } finally { dbContext?.Dispose(); if (DatabaseExtensions.Infobase != null) { DatabaseExtensions.Infobase.DbContext = null; } } }
// должен быть public, т.к. hangfire не умеет вызывать private public static void PerformAction(string module, string method) { MachineInstance.Current.PrepareThread(_globalEnv); var scriptObject = (IRuntimeContextInstance)_globalEnv.GetGlobalProperty(module); var methodId = scriptObject.FindMethod(method); scriptObject.CallAsProcedure(methodId, new IValue[0]); }
private static void PerformAction(string module, string method) { var machine = MachineInstance.Current; _globalEnv.LoadMemory(machine); var scriptObject = (IRuntimeContextInstance)_globalEnv.GetGlobalProperty(module); var methodId = scriptObject.FindMethod(method); scriptObject.CallAsProcedure(methodId, new IValue[0]); }