//Важно чтобы коснтруктор был 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);
        }
Exemple #3
0
 public void Copy(CodeExecutionParameters parameters)
 {
     UsedNamespacesNames  = parameters.UsedNamespacesNames.Where(t => t != null).ToList();
     UsedNamespacesRefs   = parameters.UsedNamespacesRefs.Where(t => t != null).ToList();
     CurrentCodeToExecute = parameters.CurrentCodeToExecute;
 }