public async override Task <OptimizerResult> Minimize(double[] parameters)
        {
            if (CancellationToken.IsCancellationRequested)
            {
                throw new TaskCanceledException();
            }

            if (_minimize == null)
            {
                var assembly = await _cSharpCompiler.CreateAssembly(Code);

                _minimize = _cSharpCompiler.GetDelegate(assembly);
            }

            var cost = await _minimize(parameters);

            await Task.Run(() =>
            {
                ActivityLogger.Add(Guid.NewGuid().ToString(), Keys, parameters, cost);
                //ActivityLogger.Add("Parameters:", parameters);
                //ActivityLogger.Add("Cost:", cost);
                //ActivityLogger.StateHasChanged();
            });

            return(new OptimizerResult(parameters, cost));
        }
        public async override Task <OptimizerResult> Minimize(double[] parameters)
        {
            if (CancellationToken.IsCancellationRequested)
            {
                throw new TaskCanceledException();
            }

            if (_minimize == null)
            {
                var assembly = await _cSharpCompiler.CreateAssembly(Code);

                var worker = await _workerFactory.CreateAsync();

                _backgroundService = await worker.CreateBackgroundServiceAsync <MinimizeFacade>();

                _minimize = _cSharpCompiler.GetDelegate(assembly);
            }

            var cost = await _backgroundService.RunAsync(r => r.Minimize(_minimize, parameters)).Result;

            await Task.Run(() =>
            {
                ActivityLogger.Add(Guid.NewGuid().ToString(), Keys, parameters, cost);
                //ActivityLogger.Add("Parameters:", parameters);
                //ActivityLogger.Add("Cost:", cost);
                //ActivityLogger.StateHasChanged();
            });

            return(new OptimizerResult(parameters, cost));
        }
Exemplo n.º 3
0
        public async Task <ActionResult> Index()
        {
            var code = "";

            using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
            {
                code = await reader.ReadToEndAsync();
            }

            var assembly = await _cSharpCompiler.CreateAssembly(code);

            if (assembly == null)
            {
                return(new StatusCodeResult(412));
            }

            return(File(assembly.ToArray(), "application/octet-stream"));
        }