public void Executar() { // Iremos simular 20 threads simultâneas, o equivalente a 20 pessoas diferentes abrirem a tela que cria // a configuração global, e as 20 apertarem no salvar em paralelo var threads = new Thread[20]; var repo = new RepositorioConfiguracaoGlobal(); // Limpamos as configurações existentes, para poder rodar o exemplo várias vezes repo.Deletar(); for (int i = 0; i < threads.Length; i++) { var i1 = i; // Cada thread basicamente irá tentar criar uma nova configuração, o que seria feito clicando no botão salvar da tela threads[i] = new Thread(new ThreadStart(() => new ServicoConfiguracaoGlobal().Criar(new ConfiguracaoGlobalDto() { PodeFazerAlgo = i1 % 2 == 0 }))); } // Iniciar execução das threads em paralelo foreach (var thread in threads) { thread.Start(); } // Pausar thread principal aguardando o processamento das demais foreach (var thread in threads) { thread.Join(); } var qtdConfigsCriadas = repo.Obter().Count; Console.WriteLine($"Total de configurações criadas após o exemplo {qtdConfigsCriadas}"); }
public ServicoConfiguracaoGlobal() { _repositorio = new RepositorioConfiguracaoGlobal(); }