コード例 #1
0
        static void Main(string[] args)
        {
            Cronometro.Start();

            // aqui estamos criando uma Thread para cada método, ou seja, eles irão executar em paralelo:
            var threadA = new Thread(Processos.ProcessoA);
            var threadB = new Thread(Processos.ProcessoB);
            var threadC = new Thread(Processos.ProcessoC);

            threadA.Start();
            threadB.Start();
            threadC.Start();

            // enquanto a thread xpto não concluir o processamento:
            while (threadA.IsAlive || threadB.IsAlive || threadC.IsAlive)
            {
                // Esse loop pode ficar rodando inúmeras vezes sem necessidade e consumindo processamento.
                // Logo, fazer os processos dessas threads dormirem, nem q seja por poucos miléssimos de segundo irá reduzir o número de processamento
                // e ganhar desempenho:
                Thread.Sleep(250);
            }

            Console.WriteLine("\nProceso concluído!");

            Cronometro.Stop();
        }
コード例 #2
0
        public IEnumerable <ProductDTO> GetAll()
        {
            Cronometro.Start();

            IEnumerable <ProductDTO> products = new List <ProductDTO>();

            string dataInCache = _distributedCache.GetString("Products");

            if (!string.IsNullOrEmpty(dataInCache))
            {
                Console.Write("#### Recuperando do Cache");
                products = JsonSerializer.Deserialize <IEnumerable <ProductDTO> >(dataInCache);
            }
            else
            {
                Console.Write("#### Recuperando do Banco de Dados");
                products = _repository.GetAll().Select(p => new ProductDTO()
                {
                    Id = p.Id, Name = p.Name, Price = p.Price, Group = p.Group
                });
                _distributedCache.SetString("Products", JsonSerializer.Serialize <IEnumerable <ProductDTO> >(products));
            }

            Cronometro.Stop();

            return(products);
        }
コード例 #3
0
 public TrazaSql(NivelDeTraza nivel, string ruta, string fichero, string mensajeInicial)
     : base(nivel, ruta, fichero)
 {
     Cronometro.Start();
     Abrir(true);
     AnotarMensaje("Inicio", mensajeInicial);
 }
コード例 #4
0
        protected override void OnContinue()
        {
            //avisamos la continuidad del servicio
            elMensaje.WriteEntry("Se continua el servicio - ServicioArchivos");

            //iniciamos el timer por si se freno
            Cronometro.Enabled = true;
            Cronometro.Start();
        }
コード例 #5
0
        protected override void OnStart(string[] args)
        {
            //avisamos del inicio del servicio
            elMensaje.WriteEntry("Inicia el servicio - ServicioArchivos");

            //iniciamos el timer por si se freno
            Cronometro.Enabled = true;
            Cronometro.Start();
        }
コード例 #6
0
 /// <summary>
 /// Inicia una cuenta regresiva
 /// </summary>
 /// <param name="SegundosAContar">int</param>
 private void RealizarConteo(int SegundosAContar)
 {
     CronometroInicioDePartida?.Stop();
     SegundosCuentaRegresiva   = SegundosAContar;
     CronometroInicioDePartida = new Cronometro(1000, (SegundosAContar * 1000));
     CronometroInicioDePartida.TranscurrioUnIntervalo += ActualizarSegundosContador;
     CronometroInicioDePartida.FinalizoElTimepo       += DesactivarPausa;
     CronometroInicioDePartida.Start();
 }
コード例 #7
0
        static void Execute()
        {
            Cronometro.Start();

            Processos.ProcessoA();
            Processos.ProcessoB();
            Processos.ProcessoC();

            Cronometro.Stop();
        }
コード例 #8
0
        static void ExecuteAsync()
        {
            Cronometro.Start();

            Parallel.Invoke(
                () => Processos.ProcessoA(),
                () => Processos.ProcessoB(),
                () => Processos.ProcessoC());

            Cronometro.Stop();
        }
コード例 #9
0
 public void EvaluarAlumno(Alumno a)
 {
     this.CargarAulas();
     this.lblAlumEvaluado.Text = a.MostrarPersona();
     this.CargandoNotas();
     IndexadorDeNotas(a);
     a.NotaFinal = notaFinal;
     SerializarEvaluacion(a, this.notaFinal);
     CargarAlumnosEvaluados(a);
     this.alumno = a;
     Cronometro.Start();
 }
コード例 #10
0
        static void Main(string[] args)
        {
            Cronometro.Start();

            // Apenas uma Thread executando os métodos de forma síncrona:
            Processos.ProcessoA();
            Processos.ProcessoB();
            Processos.ProcessoC();

            Console.WriteLine("\nProceso concluído!");

            Cronometro.Stop();
        }
コード例 #11
0
        private void Btn_iniciar_Click(object sender, EventArgs e)
        {
            try
            {
                Cronometro.Enabled = true;

                Cronometro.Start();

                DesactivarControles();

                Num1Box.Text = ObjCasosDeUso.NUM1.ToString();

                Num2Box.Text = ObjCasosDeUso.NUM2.ToString();
            } catch (Exception ex)
            {
                MessageBox.Show($"{ex}");
            }
        }
コード例 #12
0
 private void Splash_Load(object sender, EventArgs e)
 {
     Cronometro.Start();
 }
コード例 #13
0
        public override void ExecutarMetaheuristica()
        {
            //return Task.Factory.StartNew(() =>
            //{
            int iterAtual = 0, melhor_i = -1, melhor_j = -1, foMenorCutwidthSolucaoAtual = 0, foMenorSomaCutwidthSolucaoAtual = 0, foMenorQuantidadeVerticesMaiorCutwidthSolucaoAtual = 0;

            var estruturaTabu = new EstruturaTabu(base.NumeroVertices, this.NumeroIteracoesProibicaoLista, this.NumeroMaximoIteracoesProibicaoLista, this.IncrementoTamanhoListaTabu);

            var solucaoAtual = GerarSolucaoLiteraturaC1(); // GerarSolucaoAleatoria(); // GerarSolucaoInicial(); // GerarSolucaoLiteraturaC1() // new List<int> { 1, 15, 6, 2, 5, 9, 8, 13, 11, 3, 10, 7, 4, 12, 19, 17, 16, 14, 18 };

            MelhorSolucao = new List <int>(solucaoAtual);

            ExecutarFuncaoAvaliacao(solucaoAtual);
            foMenorCutwidthSolucaoAtual     = FOMenorCutwidthMelhorSolucao = CutwidthGrafo.Max(x => x.Value);
            foMenorSomaCutwidthSolucaoAtual = FOMenorSomaCutwidthMelhorSolucao = CutwidthGrafo.Sum(x => x.Value);
            foMenorQuantidadeVerticesMaiorCutwidthSolucaoAtual = FOMenorQuantidadeVerticesMaiorCutwidthMelhorSolucao = CutwidthGrafo.Where(x => x.Value == foMenorCutwidthSolucaoAtual).Count();

            GravarLogDuranteExecucao($"{ melhor_i }; { melhor_j }; { foMenorCutwidthSolucaoAtual }; {  string.Join(" | ", solucaoAtual.Select(x => x.ToString().PadLeft(2, '0'))) }\n");

            Cronometro.Start();

            while (iterAtual - this.MelhorIteracao < this.NumeroMaximoIteracoesSemMelhora)
            {
                iterAtual++;

                melhor_i = melhor_j = -1;
                CalcularMelhorVizinhoBestImprovementTroca(solucaoAtual, iterAtual, estruturaTabu, ref melhor_i, ref melhor_j, ref foMenorCutwidthSolucaoAtual, ref foMenorSomaCutwidthSolucaoAtual);

                if (melhor_i >= 0 && melhor_j >= 0)
                {
                    CutwidthGrafo = ExecutarFuncaoAvaliacaoMovimentoTroca(solucaoAtual, melhor_i, melhor_j);

                    // Troca os elementos de acordo com a melhor vizinhança retornada
                    int aux = solucaoAtual[melhor_i];
                    solucaoAtual[melhor_i] = solucaoAtual[melhor_j];
                    solucaoAtual[melhor_j] = aux;

                    GravarLogDuranteExecucao($"{ melhor_i.ToString().PadLeft(2, '0') }; { melhor_j.ToString().PadLeft(2, '0') }; { foMenorCutwidthSolucaoAtual.ToString().PadLeft(2, '0') }; {  string.Join(" | ", solucaoAtual.Select(x => x.ToString().PadLeft(2, '0'))) }");

                    estruturaTabu.DefinirTabu(melhor_i, melhor_j, iterAtual);

                    if (foMenorCutwidthSolucaoAtual < FOMenorCutwidthMelhorSolucao ||
                        (foMenorCutwidthSolucaoAtual == FOMenorCutwidthMelhorSolucao && foMenorSomaCutwidthSolucaoAtual < FOMenorSomaCutwidthMelhorSolucao))
                    {
                        this.MelhorIteracao              = iterAtual;
                        FOMenorCutwidthMelhorSolucao     = foMenorCutwidthSolucaoAtual;
                        FOMenorSomaCutwidthMelhorSolucao = foMenorSomaCutwidthSolucaoAtual;

                        MelhorSolucao = new List <int>(solucaoAtual);

                        this.IteracoesMelhoraSolucaoGlobal.Add(iterAtual);

                        estruturaTabu.ResetarTamanhoLista();
                    }
                    else
                    {
                        if ((iterAtual - this.MelhorIteracao) % this.ModuloIteracaoSemMelhoraIncrementoListaTabu == 0)
                        {
                            estruturaTabu.IncrementarTamanhoLista();
                        }
                    }
                }
                else
                {
                    estruturaTabu.DecrementarTamanhoLista();
                }
            }

            Cronometro.Stop();

            ExecutarFuncaoAvaliacao(MelhorSolucao);

            GravarLogDuranteExecucao($"\n\nMelhorias solução global: {string.Join(" | ", base.IteracoesMelhoraSolucaoGlobal) }");
            GravarLogDuranteExecucao($"Cutdwidth: { base.FOMenorCutwidthMelhorSolucao }");
            GravarLogDuranteExecucao($"Solução Final: {  string.Join(" | ", MelhorSolucao.Select(x => x.ToString().PadLeft(2, '0'))) }");

            //Console.WriteLine(estruturaTabu.QuantidadeIteracoesProibicao);
            //estruturaTabu.ImprimirTrocasListaTabu(base.Instancia);
            //estruturaTabu.ImprimirQuantidadeIteracoesProibicaoListaTabu(base.Instancia);
            //});
        }
コード例 #14
0
 public WIN_Procesos(Queue <Lote> Lotes)
 {
     this.Lotes = Lotes;
     InitializeComponent();
     Cronometro.Start();
 }