//Важно чтобы коснтруктор был public - иначе: //warning MSB3214: "D:\Work\MFC\PROJECTS\Delta2\D2_VS2015\D2CodeExec\D2CodeExec\bin\Release\D2CodeExec.dll" не содержит типы, которые могут быть зарегистрированы для взаимодействия объектов COM. public CodeGeneratorWrapper() { _codeExecutionParameters = new CodeExecutionParameters(); //_executingTasks = new List<Task<string>>(); //_cancellationTokenSources = new List<CancellationTokenSource>(); _currentlyExecutingTasks = new List <D2Task>(); _d2ShedulerInterfaceLock = new object(); _logFileLock = new object(); _codeGeneratorLock = new object(); }
/// <summary> /// Execution task thread /// </summary> /// <param name="codeExecutionParameters">parameters for thread</param> /// <returns></returns> internal static string CodeExecution(CodeExecutionParameters codeExecutionParameters) { string result = "OK"; try { IGeneratedCode <int> executedCode = null; lock (_codeGeneratorLock) { executedCode = CodeGenerator.CreateCode <int>(codeExecutionParameters.CurrentCodeToExecute, codeExecutionParameters.UsedNamespacesNames, codeExecutionParameters.UsedNamespacesRefs, new CodeParameter("__codeGeneratorWrapper_CancellationToken", typeof(CancellationToken))); } executedCode.Execute(_codeExecutionParameters.Cancellation); } catch (Exception exception) { result = exception + exception.StackTrace; } return(result); }
public void Copy(CodeExecutionParameters parameters) { UsedNamespacesNames = parameters.UsedNamespacesNames.Where(t => t != null).ToList(); UsedNamespacesRefs = parameters.UsedNamespacesRefs.Where(t => t != null).ToList(); CurrentCodeToExecute = parameters.CurrentCodeToExecute; }